package ie.tcd.everm.evedsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import ie.tcd.everm.evedsl.services.EveDescGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalEveDescParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'import'", "'.'", "'*'", "'helper'", "'('", "','", "')'", "':'", "'EventSequence'", "'{'", "'}'", "'event'", "'parse'", "'pre'", "'post'", "'text'", "'by'", "'ivar'", "'csv'", "'split'", "'expr'", "'['", "']'", "'Ignore'", "'plain'", "'logic'", "';'", "'var'", "'in'", "'enforced'", "'API'", "'mapping'", "'=>'", "'unique'", "'identify'", "'newImage'", "'subType'", "'invocation'", "'invoke'", "'returning'", "'operation'", "'->'", "'='", "'+='", "'||'", "'&&'", "'=='", "'!='", "'instanceof'", "'>='", "'<='", "'>'", "'<'", "'..'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'?.'", "'*.'", "'|'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'super'", "'::'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'catch'", "'?'", "'extends'", "'&'", "'get'", "'set'", "'add'", "'remove'", "'create'", "'destroy'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int T__99=99;
    public static final int T__98=98;
    public static final int T__97=97;
    public static final int T__96=96;
    public static final int T__95=95;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__89=89;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=7;
    public static final int RULE_STRING=5;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int T__78=78;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__103=103;
    public static final int T__59=59;
    public static final int T__104=104;
    public static final int T__105=105;
    public static final int RULE_INT=6;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__102=102;
    public static final int T__101=101;
    public static final int T__100=100;
    public static final int RULE_SL_COMMENT=8;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalEveDescParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalEveDescParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalEveDescParser.tokenNames; }
    public String getGrammarFileName() { return "../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g"; }



     	private EveDescGrammarAccess grammarAccess;
     	
        public InternalEveDescParser(TokenStream input, EveDescGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "EventDesc";	
       	}
       	
       	@Override
       	protected EveDescGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleEventDesc"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:68:1: entryRuleEventDesc returns [EObject current=null] : iv_ruleEventDesc= ruleEventDesc EOF ;
    public final EObject entryRuleEventDesc() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEventDesc = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:69:2: (iv_ruleEventDesc= ruleEventDesc EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:70:2: iv_ruleEventDesc= ruleEventDesc EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEventDescRule()); 
            }
            pushFollow(FOLLOW_ruleEventDesc_in_entryRuleEventDesc75);
            iv_ruleEventDesc=ruleEventDesc();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEventDesc; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEventDesc85); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEventDesc"


    // $ANTLR start "ruleEventDesc"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:77:1: ruleEventDesc returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_imports_2_0= ruleImport ) )* ( (lv_sequence_3_0= ruleEventSeq ) )* ( (lv_api_4_0= ruleAPI ) )* ) ;
    public final EObject ruleEventDesc() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_imports_2_0 = null;

        EObject lv_sequence_3_0 = null;

        EObject lv_api_4_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:80:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_imports_2_0= ruleImport ) )* ( (lv_sequence_3_0= ruleEventSeq ) )* ( (lv_api_4_0= ruleAPI ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:81:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_imports_2_0= ruleImport ) )* ( (lv_sequence_3_0= ruleEventSeq ) )* ( (lv_api_4_0= ruleAPI ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:81:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_imports_2_0= ruleImport ) )* ( (lv_sequence_3_0= ruleEventSeq ) )* ( (lv_api_4_0= ruleAPI ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:81:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_imports_2_0= ruleImport ) )* ( (lv_sequence_3_0= ruleEventSeq ) )* ( (lv_api_4_0= ruleAPI ) )*
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleEventDesc122); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getEventDescAccess().getPackageKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:85:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:86:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:86:1: (lv_name_1_0= ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:87:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEventDescAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleEventDesc143);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEventDescRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:103:2: ( (lv_imports_2_0= ruleImport ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==12) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:104:1: (lv_imports_2_0= ruleImport )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:104:1: (lv_imports_2_0= ruleImport )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:105:3: lv_imports_2_0= ruleImport
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventDescAccess().getImportsImportParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImport_in_ruleEventDesc164);
            	    lv_imports_2_0=ruleImport();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventDescRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_2_0, 
            	              		"Import");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:121:3: ( (lv_sequence_3_0= ruleEventSeq ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==20) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:122:1: (lv_sequence_3_0= ruleEventSeq )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:122:1: (lv_sequence_3_0= ruleEventSeq )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:123:3: lv_sequence_3_0= ruleEventSeq
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventDescAccess().getSequenceEventSeqParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleEventSeq_in_ruleEventDesc186);
            	    lv_sequence_3_0=ruleEventSeq();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventDescRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"sequence",
            	              		lv_sequence_3_0, 
            	              		"EventSeq");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:139:3: ( (lv_api_4_0= ruleAPI ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==42) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:140:1: (lv_api_4_0= ruleAPI )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:140:1: (lv_api_4_0= ruleAPI )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:141:3: lv_api_4_0= ruleAPI
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventDescAccess().getApiAPIParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAPI_in_ruleEventDesc208);
            	    lv_api_4_0=ruleAPI();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventDescRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"api",
            	              		lv_api_4_0, 
            	              		"API");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEventDesc"


    // $ANTLR start "entryRuleImport"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:165:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:166:2: (iv_ruleImport= ruleImport EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:167:2: iv_ruleImport= ruleImport EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportRule()); 
            }
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport245);
            iv_ruleImport=ruleImport();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImport; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport255); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImport"


    // $ANTLR start "ruleImport"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:174:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:177:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:178:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:178:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:178:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) )
            {
            otherlv_0=(Token)match(input,12,FOLLOW_12_in_ruleImport292); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:182:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:183:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:183:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:184:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildCardParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedNameWithWildCard_in_ruleImport313);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildCard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getImportRule());
              	        }
                     		set(
                     			current, 
                     			"importedNamespace",
                      		lv_importedNamespace_1_0, 
                      		"QualifiedNameWithWildCard");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImport"


    // $ANTLR start "entryRuleQualifiedNameWithWildCard"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:208:1: entryRuleQualifiedNameWithWildCard returns [String current=null] : iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF ;
    public final String entryRuleQualifiedNameWithWildCard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildCard = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:209:2: (iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:210:2: iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameWithWildCardRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard350);
            iv_ruleQualifiedNameWithWildCard=ruleQualifiedNameWithWildCard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedNameWithWildCard.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard361); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildCard"


    // $ANTLR start "ruleQualifiedNameWithWildCard"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:217:1: ruleQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildCard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:220:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:221:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:221:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:222:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard408);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_QualifiedName_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:232:1: (kw= '.' kw= '*' )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==13) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:233:2: kw= '.' kw= '*'
                    {
                    kw=(Token)match(input,13,FOLLOW_13_in_ruleQualifiedNameWithWildCard427); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
                          
                    }
                    kw=(Token)match(input,14,FOLLOW_14_in_ruleQualifiedNameWithWildCard440); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildCard"


    // $ANTLR start "entryRuleHelper"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:252:1: entryRuleHelper returns [EObject current=null] : iv_ruleHelper= ruleHelper EOF ;
    public final EObject entryRuleHelper() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHelper = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:253:2: (iv_ruleHelper= ruleHelper EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:254:2: iv_ruleHelper= ruleHelper EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getHelperRule()); 
            }
            pushFollow(FOLLOW_ruleHelper_in_entryRuleHelper482);
            iv_ruleHelper=ruleHelper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleHelper; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleHelper492); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHelper"


    // $ANTLR start "ruleHelper"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:261:1: ruleHelper returns [EObject current=null] : (otherlv_0= 'helper' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_6= ')' otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleHelper() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        EObject lv_params_3_0 = null;

        EObject lv_params_5_0 = null;

        EObject lv_type_8_0 = null;

        EObject lv_body_9_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:264:28: ( (otherlv_0= 'helper' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_6= ')' otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:265:1: (otherlv_0= 'helper' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_6= ')' otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:265:1: (otherlv_0= 'helper' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_6= ')' otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:265:3: otherlv_0= 'helper' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_6= ')' otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) )
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_ruleHelper529); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getHelperAccess().getHelperKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:269:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:270:1: (lv_name_1_0= RULE_ID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:270:1: (lv_name_1_0= RULE_ID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:271:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHelper546); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getHelperAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getHelperRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleHelper563); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getHelperAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:291:1: ( ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )* )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==RULE_ID||LA6_0==16||LA6_0==44) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:291:2: ( (lv_params_3_0= ruleFullJvmFormalParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )*
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:291:2: ( (lv_params_3_0= ruleFullJvmFormalParameter ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:292:1: (lv_params_3_0= ruleFullJvmFormalParameter )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:292:1: (lv_params_3_0= ruleFullJvmFormalParameter )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:293:3: lv_params_3_0= ruleFullJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getHelperAccess().getParamsFullJvmFormalParameterParserRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleHelper585);
                    lv_params_3_0=ruleFullJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getHelperRule());
                      	        }
                             		add(
                             			current, 
                             			"params",
                              		lv_params_3_0, 
                              		"FullJvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:309:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) )*
                    loop5:
                    do {
                        int alt5=2;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0==17) ) {
                            alt5=1;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:309:4: otherlv_4= ',' ( (lv_params_5_0= ruleFullJvmFormalParameter ) )
                    	    {
                    	    otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleHelper598); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getHelperAccess().getCommaKeyword_3_1_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:313:1: ( (lv_params_5_0= ruleFullJvmFormalParameter ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:314:1: (lv_params_5_0= ruleFullJvmFormalParameter )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:314:1: (lv_params_5_0= ruleFullJvmFormalParameter )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:315:3: lv_params_5_0= ruleFullJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getHelperAccess().getParamsFullJvmFormalParameterParserRuleCall_3_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleHelper619);
                    	    lv_params_5_0=ruleFullJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getHelperRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"params",
                    	              		lv_params_5_0, 
                    	              		"FullJvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop5;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleHelper635); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getHelperAccess().getRightParenthesisKeyword_4());
                  
            }
            otherlv_7=(Token)match(input,19,FOLLOW_19_in_ruleHelper647); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getHelperAccess().getColonKeyword_5());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:339:1: ( (lv_type_8_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:340:1: (lv_type_8_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:340:1: (lv_type_8_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:341:3: lv_type_8_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getHelperAccess().getTypeJvmTypeReferenceParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleHelper668);
            lv_type_8_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getHelperRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_8_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:357:2: ( (lv_body_9_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:358:1: (lv_body_9_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:358:1: (lv_body_9_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:359:3: lv_body_9_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getHelperAccess().getBodyXBlockExpressionParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleHelper689);
            lv_body_9_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getHelperRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_9_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHelper"


    // $ANTLR start "entryRuleEventSeq"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:383:1: entryRuleEventSeq returns [EObject current=null] : iv_ruleEventSeq= ruleEventSeq EOF ;
    public final EObject entryRuleEventSeq() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEventSeq = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:384:2: (iv_ruleEventSeq= ruleEventSeq EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:385:2: iv_ruleEventSeq= ruleEventSeq EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEventSeqRule()); 
            }
            pushFollow(FOLLOW_ruleEventSeq_in_entryRuleEventSeq725);
            iv_ruleEventSeq=ruleEventSeq();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEventSeq; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEventSeq735); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEventSeq"


    // $ANTLR start "ruleEventSeq"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:392:1: ruleEventSeq returns [EObject current=null] : (otherlv_0= 'EventSequence' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_event_4_0= ruleEvent ) )* otherlv_5= '}' ) ;
    public final EObject ruleEventSeq() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_helper_3_0 = null;

        EObject lv_event_4_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:395:28: ( (otherlv_0= 'EventSequence' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_event_4_0= ruleEvent ) )* otherlv_5= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:396:1: (otherlv_0= 'EventSequence' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_event_4_0= ruleEvent ) )* otherlv_5= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:396:1: (otherlv_0= 'EventSequence' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_event_4_0= ruleEvent ) )* otherlv_5= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:396:3: otherlv_0= 'EventSequence' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_event_4_0= ruleEvent ) )* otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleEventSeq772); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getEventSeqAccess().getEventSequenceKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:400:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:401:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:401:1: (lv_name_1_0= ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:402:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEventSeqAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleEventSeq793);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEventSeqRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleEventSeq805); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getEventSeqAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:422:1: ( (lv_helper_3_0= ruleHelper ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==15) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:423:1: (lv_helper_3_0= ruleHelper )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:423:1: (lv_helper_3_0= ruleHelper )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:424:3: lv_helper_3_0= ruleHelper
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventSeqAccess().getHelperHelperParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleHelper_in_ruleEventSeq826);
            	    lv_helper_3_0=ruleHelper();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventSeqRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"helper",
            	              		lv_helper_3_0, 
            	              		"Helper");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:440:3: ( (lv_event_4_0= ruleEvent ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==23) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:441:1: (lv_event_4_0= ruleEvent )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:441:1: (lv_event_4_0= ruleEvent )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:442:3: lv_event_4_0= ruleEvent
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventSeqAccess().getEventEventParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleEvent_in_ruleEventSeq848);
            	    lv_event_4_0=ruleEvent();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventSeqRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"event",
            	              		lv_event_4_0, 
            	              		"Event");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            otherlv_5=(Token)match(input,22,FOLLOW_22_in_ruleEventSeq861); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getEventSeqAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEventSeq"


    // $ANTLR start "entryRuleEvent"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:470:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
    public final EObject entryRuleEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvent = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:471:2: (iv_ruleEvent= ruleEvent EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:472:2: iv_ruleEvent= ruleEvent EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEventRule()); 
            }
            pushFollow(FOLLOW_ruleEvent_in_entryRuleEvent897);
            iv_ruleEvent=ruleEvent();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEvent; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEvent907); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvent"


    // $ANTLR start "ruleEvent"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:479:1: ruleEvent returns [EObject current=null] : (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_decScope_3_0= ruleDecScope ) )* otherlv_4= 'parse' ( (lv_parser_5_0= ruleParser ) ) otherlv_6= 'pre' otherlv_7= '{' ( (lv_pre_8_0= ruleXExpression ) )* otherlv_9= '}' otherlv_10= 'post' ( (lv_post_11_0= ruleXBlockExpression ) ) otherlv_12= '}' ) ;
    public final EObject ruleEvent() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        EObject lv_decScope_3_0 = null;

        EObject lv_parser_5_0 = null;

        EObject lv_pre_8_0 = null;

        EObject lv_post_11_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:482:28: ( (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_decScope_3_0= ruleDecScope ) )* otherlv_4= 'parse' ( (lv_parser_5_0= ruleParser ) ) otherlv_6= 'pre' otherlv_7= '{' ( (lv_pre_8_0= ruleXExpression ) )* otherlv_9= '}' otherlv_10= 'post' ( (lv_post_11_0= ruleXBlockExpression ) ) otherlv_12= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:483:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_decScope_3_0= ruleDecScope ) )* otherlv_4= 'parse' ( (lv_parser_5_0= ruleParser ) ) otherlv_6= 'pre' otherlv_7= '{' ( (lv_pre_8_0= ruleXExpression ) )* otherlv_9= '}' otherlv_10= 'post' ( (lv_post_11_0= ruleXBlockExpression ) ) otherlv_12= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:483:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_decScope_3_0= ruleDecScope ) )* otherlv_4= 'parse' ( (lv_parser_5_0= ruleParser ) ) otherlv_6= 'pre' otherlv_7= '{' ( (lv_pre_8_0= ruleXExpression ) )* otherlv_9= '}' otherlv_10= 'post' ( (lv_post_11_0= ruleXBlockExpression ) ) otherlv_12= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:483:3: otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_decScope_3_0= ruleDecScope ) )* otherlv_4= 'parse' ( (lv_parser_5_0= ruleParser ) ) otherlv_6= 'pre' otherlv_7= '{' ( (lv_pre_8_0= ruleXExpression ) )* otherlv_9= '}' otherlv_10= 'post' ( (lv_post_11_0= ruleXBlockExpression ) ) otherlv_12= '}'
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleEvent944); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getEventAccess().getEventKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:487:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:488:1: (lv_name_1_0= RULE_ID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:488:1: (lv_name_1_0= RULE_ID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:489:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEvent961); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getEventAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getEventRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleEvent978); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getEventAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:509:1: ( (lv_decScope_3_0= ruleDecScope ) )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==39) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:510:1: (lv_decScope_3_0= ruleDecScope )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:510:1: (lv_decScope_3_0= ruleDecScope )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:511:3: lv_decScope_3_0= ruleDecScope
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventAccess().getDecScopeDecScopeParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleDecScope_in_ruleEvent999);
            	    lv_decScope_3_0=ruleDecScope();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"decScope",
            	              		lv_decScope_3_0, 
            	              		"DecScope");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            otherlv_4=(Token)match(input,24,FOLLOW_24_in_ruleEvent1012); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getEventAccess().getParseKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:531:1: ( (lv_parser_5_0= ruleParser ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:532:1: (lv_parser_5_0= ruleParser )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:532:1: (lv_parser_5_0= ruleParser )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:533:3: lv_parser_5_0= ruleParser
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEventAccess().getParserParserParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleParser_in_ruleEvent1033);
            lv_parser_5_0=ruleParser();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEventRule());
              	        }
                     		set(
                     			current, 
                     			"parser",
                      		lv_parser_5_0, 
                      		"Parser");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,25,FOLLOW_25_in_ruleEvent1045); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getEventAccess().getPreKeyword_6());
                  
            }
            otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleEvent1057); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getEventAccess().getLeftCurlyBracketKeyword_7());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:557:1: ( (lv_pre_8_0= ruleXExpression ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_INT)||LA10_0==16||LA10_0==21||LA10_0==33||LA10_0==64||(LA10_0>=66 && LA10_0<=67)||LA10_0==71||LA10_0==76||LA10_0==78||(LA10_0>=81 && LA10_0<=83)||LA10_0==85||(LA10_0>=87 && LA10_0<=94)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:558:1: (lv_pre_8_0= ruleXExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:558:1: (lv_pre_8_0= ruleXExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:559:3: lv_pre_8_0= ruleXExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEventAccess().getPreXExpressionParserRuleCall_8_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpression_in_ruleEvent1078);
            	    lv_pre_8_0=ruleXExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEventRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"pre",
            	              		lv_pre_8_0, 
            	              		"XExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            otherlv_9=(Token)match(input,22,FOLLOW_22_in_ruleEvent1091); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getEventAccess().getRightCurlyBracketKeyword_9());
                  
            }
            otherlv_10=(Token)match(input,26,FOLLOW_26_in_ruleEvent1103); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getEventAccess().getPostKeyword_10());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:583:1: ( (lv_post_11_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:584:1: (lv_post_11_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:584:1: (lv_post_11_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:585:3: lv_post_11_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEventAccess().getPostXBlockExpressionParserRuleCall_11_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleEvent1124);
            lv_post_11_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEventRule());
              	        }
                     		set(
                     			current, 
                     			"post",
                      		lv_post_11_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_12=(Token)match(input,22,FOLLOW_22_in_ruleEvent1136); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_12, grammarAccess.getEventAccess().getRightCurlyBracketKeyword_12());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvent"


    // $ANTLR start "entryRuleParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:613:1: entryRuleParser returns [EObject current=null] : iv_ruleParser= ruleParser EOF ;
    public final EObject entryRuleParser() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParser = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:614:2: (iv_ruleParser= ruleParser EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:615:2: iv_ruleParser= ruleParser EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getParserRule()); 
            }
            pushFollow(FOLLOW_ruleParser_in_entryRuleParser1172);
            iv_ruleParser=ruleParser();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleParser; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleParser1182); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParser"


    // $ANTLR start "ruleParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:622:1: ruleParser returns [EObject current=null] : (this_TextParser_0= ruleTextParser | this_PlainParser_1= rulePlainParser ) ;
    public final EObject ruleParser() throws RecognitionException {
        EObject current = null;

        EObject this_TextParser_0 = null;

        EObject this_PlainParser_1 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:625:28: ( (this_TextParser_0= ruleTextParser | this_PlainParser_1= rulePlainParser ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:626:1: (this_TextParser_0= ruleTextParser | this_PlainParser_1= rulePlainParser )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:626:1: (this_TextParser_0= ruleTextParser | this_PlainParser_1= rulePlainParser )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==27) ) {
                alt11=1;
            }
            else if ( (LA11_0==36) ) {
                alt11=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:627:5: this_TextParser_0= ruleTextParser
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getParserAccess().getTextParserParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTextParser_in_ruleParser1229);
                    this_TextParser_0=ruleTextParser();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TextParser_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:637:5: this_PlainParser_1= rulePlainParser
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getParserAccess().getPlainParserParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_rulePlainParser_in_ruleParser1256);
                    this_PlainParser_1=rulePlainParser();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PlainParser_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParser"


    // $ANTLR start "entryRuleTextParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:653:1: entryRuleTextParser returns [EObject current=null] : iv_ruleTextParser= ruleTextParser EOF ;
    public final EObject entryRuleTextParser() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTextParser = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:654:2: (iv_ruleTextParser= ruleTextParser EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:655:2: iv_ruleTextParser= ruleTextParser EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTextParserRule()); 
            }
            pushFollow(FOLLOW_ruleTextParser_in_entryRuleTextParser1291);
            iv_ruleTextParser=ruleTextParser();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTextParser; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTextParser1301); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTextParser"


    // $ANTLR start "ruleTextParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:662:1: ruleTextParser returns [EObject current=null] : (otherlv_0= 'text' (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )? otherlv_3= '{' (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )? ( (lv_value_6_0= ruleAbstractTextValue ) )* otherlv_7= '}' ) ;
    public final EObject ruleTextParser() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        EObject lv_formatter_2_0 = null;

        EObject lv_ivar_5_0 = null;

        EObject lv_value_6_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:665:28: ( (otherlv_0= 'text' (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )? otherlv_3= '{' (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )? ( (lv_value_6_0= ruleAbstractTextValue ) )* otherlv_7= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:666:1: (otherlv_0= 'text' (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )? otherlv_3= '{' (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )? ( (lv_value_6_0= ruleAbstractTextValue ) )* otherlv_7= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:666:1: (otherlv_0= 'text' (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )? otherlv_3= '{' (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )? ( (lv_value_6_0= ruleAbstractTextValue ) )* otherlv_7= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:666:3: otherlv_0= 'text' (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )? otherlv_3= '{' (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )? ( (lv_value_6_0= ruleAbstractTextValue ) )* otherlv_7= '}'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleTextParser1338); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTextParserAccess().getTextKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:670:1: (otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==28) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:670:3: otherlv_1= 'by' ( (lv_formatter_2_0= ruleTextFormatter ) )
                    {
                    otherlv_1=(Token)match(input,28,FOLLOW_28_in_ruleTextParser1351); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getTextParserAccess().getByKeyword_1_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:674:1: ( (lv_formatter_2_0= ruleTextFormatter ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:675:1: (lv_formatter_2_0= ruleTextFormatter )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:675:1: (lv_formatter_2_0= ruleTextFormatter )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:676:3: lv_formatter_2_0= ruleTextFormatter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTextParserAccess().getFormatterTextFormatterParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTextFormatter_in_ruleTextParser1372);
                    lv_formatter_2_0=ruleTextFormatter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTextParserRule());
                      	        }
                             		set(
                             			current, 
                             			"formatter",
                              		lv_formatter_2_0, 
                              		"TextFormatter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleTextParser1386); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getTextParserAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:696:1: (otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==29) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:696:3: otherlv_4= 'ivar' ( (lv_ivar_5_0= ruleXVariableDeclaration ) )
                    {
                    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleTextParser1399); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getTextParserAccess().getIvarKeyword_3_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:700:1: ( (lv_ivar_5_0= ruleXVariableDeclaration ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:701:1: (lv_ivar_5_0= ruleXVariableDeclaration )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:701:1: (lv_ivar_5_0= ruleXVariableDeclaration )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:702:3: lv_ivar_5_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTextParserAccess().getIvarXVariableDeclarationParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleTextParser1420);
                    lv_ivar_5_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTextParserRule());
                      	        }
                             		add(
                             			current, 
                             			"ivar",
                              		lv_ivar_5_0, 
                              		"XVariableDeclaration");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:718:4: ( (lv_value_6_0= ruleAbstractTextValue ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==RULE_STRING||LA14_0==33||LA14_0==35) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:719:1: (lv_value_6_0= ruleAbstractTextValue )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:719:1: (lv_value_6_0= ruleAbstractTextValue )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:720:3: lv_value_6_0= ruleAbstractTextValue
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getTextParserAccess().getValueAbstractTextValueParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAbstractTextValue_in_ruleTextParser1443);
            	    lv_value_6_0=ruleAbstractTextValue();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getTextParserRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"value",
            	              		lv_value_6_0, 
            	              		"AbstractTextValue");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            otherlv_7=(Token)match(input,22,FOLLOW_22_in_ruleTextParser1456); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getTextParserAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTextParser"


    // $ANTLR start "entryRuleTextFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:748:1: entryRuleTextFormatter returns [EObject current=null] : iv_ruleTextFormatter= ruleTextFormatter EOF ;
    public final EObject entryRuleTextFormatter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTextFormatter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:749:2: (iv_ruleTextFormatter= ruleTextFormatter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:750:2: iv_ruleTextFormatter= ruleTextFormatter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTextFormatterRule()); 
            }
            pushFollow(FOLLOW_ruleTextFormatter_in_entryRuleTextFormatter1492);
            iv_ruleTextFormatter=ruleTextFormatter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTextFormatter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTextFormatter1502); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTextFormatter"


    // $ANTLR start "ruleTextFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:757:1: ruleTextFormatter returns [EObject current=null] : ( ruleCSVFormatter | this_SplitFormatter_1= ruleSplitFormatter | this_UserDefinedFormatter_2= ruleUserDefinedFormatter ) ;
    public final EObject ruleTextFormatter() throws RecognitionException {
        EObject current = null;

        EObject this_SplitFormatter_1 = null;

        EObject this_UserDefinedFormatter_2 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:760:28: ( ( ruleCSVFormatter | this_SplitFormatter_1= ruleSplitFormatter | this_UserDefinedFormatter_2= ruleUserDefinedFormatter ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:761:1: ( ruleCSVFormatter | this_SplitFormatter_1= ruleSplitFormatter | this_UserDefinedFormatter_2= ruleUserDefinedFormatter )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:761:1: ( ruleCSVFormatter | this_SplitFormatter_1= ruleSplitFormatter | this_UserDefinedFormatter_2= ruleUserDefinedFormatter )
            int alt15=3;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt15=1;
                }
                break;
            case 31:
                {
                alt15=2;
                }
                break;
            case 32:
                {
                alt15=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }

            switch (alt15) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:762:5: ruleCSVFormatter
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTextFormatterAccess().getCSVFormatterParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCSVFormatter_in_ruleTextFormatter1543);
                    ruleCSVFormatter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:771:5: this_SplitFormatter_1= ruleSplitFormatter
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTextFormatterAccess().getSplitFormatterParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSplitFormatter_in_ruleTextFormatter1570);
                    this_SplitFormatter_1=ruleSplitFormatter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SplitFormatter_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:781:5: this_UserDefinedFormatter_2= ruleUserDefinedFormatter
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTextFormatterAccess().getUserDefinedFormatterParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUserDefinedFormatter_in_ruleTextFormatter1597);
                    this_UserDefinedFormatter_2=ruleUserDefinedFormatter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UserDefinedFormatter_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTextFormatter"


    // $ANTLR start "entryRuleCSVFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:797:1: entryRuleCSVFormatter returns [String current=null] : iv_ruleCSVFormatter= ruleCSVFormatter EOF ;
    public final String entryRuleCSVFormatter() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCSVFormatter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:798:2: (iv_ruleCSVFormatter= ruleCSVFormatter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:799:2: iv_ruleCSVFormatter= ruleCSVFormatter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCSVFormatterRule()); 
            }
            pushFollow(FOLLOW_ruleCSVFormatter_in_entryRuleCSVFormatter1633);
            iv_ruleCSVFormatter=ruleCSVFormatter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCSVFormatter.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCSVFormatter1644); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCSVFormatter"


    // $ANTLR start "ruleCSVFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:806:1: ruleCSVFormatter returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'csv' ;
    public final AntlrDatatypeRuleToken ruleCSVFormatter() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:809:28: (kw= 'csv' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:811:2: kw= 'csv'
            {
            kw=(Token)match(input,30,FOLLOW_30_in_ruleCSVFormatter1681); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getCSVFormatterAccess().getCsvKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCSVFormatter"


    // $ANTLR start "entryRuleSplitFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:824:1: entryRuleSplitFormatter returns [EObject current=null] : iv_ruleSplitFormatter= ruleSplitFormatter EOF ;
    public final EObject entryRuleSplitFormatter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSplitFormatter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:825:2: (iv_ruleSplitFormatter= ruleSplitFormatter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:826:2: iv_ruleSplitFormatter= ruleSplitFormatter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSplitFormatterRule()); 
            }
            pushFollow(FOLLOW_ruleSplitFormatter_in_entryRuleSplitFormatter1720);
            iv_ruleSplitFormatter=ruleSplitFormatter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSplitFormatter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSplitFormatter1730); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSplitFormatter"


    // $ANTLR start "ruleSplitFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:833:1: ruleSplitFormatter returns [EObject current=null] : (otherlv_0= 'split' otherlv_1= '(' ( (lv_spliter_2_0= RULE_STRING ) ) otherlv_3= ')' ) ;
    public final EObject ruleSplitFormatter() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_spliter_2_0=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:836:28: ( (otherlv_0= 'split' otherlv_1= '(' ( (lv_spliter_2_0= RULE_STRING ) ) otherlv_3= ')' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:837:1: (otherlv_0= 'split' otherlv_1= '(' ( (lv_spliter_2_0= RULE_STRING ) ) otherlv_3= ')' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:837:1: (otherlv_0= 'split' otherlv_1= '(' ( (lv_spliter_2_0= RULE_STRING ) ) otherlv_3= ')' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:837:3: otherlv_0= 'split' otherlv_1= '(' ( (lv_spliter_2_0= RULE_STRING ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleSplitFormatter1767); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSplitFormatterAccess().getSplitKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleSplitFormatter1779); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSplitFormatterAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:845:1: ( (lv_spliter_2_0= RULE_STRING ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:846:1: (lv_spliter_2_0= RULE_STRING )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:846:1: (lv_spliter_2_0= RULE_STRING )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:847:3: lv_spliter_2_0= RULE_STRING
            {
            lv_spliter_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSplitFormatter1796); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_spliter_2_0, grammarAccess.getSplitFormatterAccess().getSpliterSTRINGTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getSplitFormatterRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"spliter",
                      		lv_spliter_2_0, 
                      		"STRING");
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleSplitFormatter1813); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getSplitFormatterAccess().getRightParenthesisKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSplitFormatter"


    // $ANTLR start "entryRuleUserDefinedFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:875:1: entryRuleUserDefinedFormatter returns [EObject current=null] : iv_ruleUserDefinedFormatter= ruleUserDefinedFormatter EOF ;
    public final EObject entryRuleUserDefinedFormatter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUserDefinedFormatter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:876:2: (iv_ruleUserDefinedFormatter= ruleUserDefinedFormatter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:877:2: iv_ruleUserDefinedFormatter= ruleUserDefinedFormatter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUserDefinedFormatterRule()); 
            }
            pushFollow(FOLLOW_ruleUserDefinedFormatter_in_entryRuleUserDefinedFormatter1849);
            iv_ruleUserDefinedFormatter=ruleUserDefinedFormatter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUserDefinedFormatter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUserDefinedFormatter1859); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUserDefinedFormatter"


    // $ANTLR start "ruleUserDefinedFormatter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:884:1: ruleUserDefinedFormatter returns [EObject current=null] : (otherlv_0= 'expr' otherlv_1= '(' ( (lv_expr_2_0= ruleXExpression ) ) otherlv_3= ')' ) ;
    public final EObject ruleUserDefinedFormatter() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_expr_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:887:28: ( (otherlv_0= 'expr' otherlv_1= '(' ( (lv_expr_2_0= ruleXExpression ) ) otherlv_3= ')' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:888:1: (otherlv_0= 'expr' otherlv_1= '(' ( (lv_expr_2_0= ruleXExpression ) ) otherlv_3= ')' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:888:1: (otherlv_0= 'expr' otherlv_1= '(' ( (lv_expr_2_0= ruleXExpression ) ) otherlv_3= ')' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:888:3: otherlv_0= 'expr' otherlv_1= '(' ( (lv_expr_2_0= ruleXExpression ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleUserDefinedFormatter1896); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getUserDefinedFormatterAccess().getExprKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleUserDefinedFormatter1908); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getUserDefinedFormatterAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:896:1: ( (lv_expr_2_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:897:1: (lv_expr_2_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:897:1: (lv_expr_2_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:898:3: lv_expr_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUserDefinedFormatterAccess().getExprXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleUserDefinedFormatter1929);
            lv_expr_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUserDefinedFormatterRule());
              	        }
                     		set(
                     			current, 
                     			"expr",
                      		lv_expr_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleUserDefinedFormatter1941); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getUserDefinedFormatterAccess().getRightParenthesisKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUserDefinedFormatter"


    // $ANTLR start "entryRuleAbstractTextValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:926:1: entryRuleAbstractTextValue returns [EObject current=null] : iv_ruleAbstractTextValue= ruleAbstractTextValue EOF ;
    public final EObject entryRuleAbstractTextValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractTextValue = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:927:2: (iv_ruleAbstractTextValue= ruleAbstractTextValue EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:928:2: iv_ruleAbstractTextValue= ruleAbstractTextValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAbstractTextValueRule()); 
            }
            pushFollow(FOLLOW_ruleAbstractTextValue_in_entryRuleAbstractTextValue1977);
            iv_ruleAbstractTextValue=ruleAbstractTextValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAbstractTextValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractTextValue1987); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractTextValue"


    // $ANTLR start "ruleAbstractTextValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:935:1: ruleAbstractTextValue returns [EObject current=null] : (this_VarValue_0= ruleVarValue | this_ConstantText_1= ruleConstantText | this_IgnoreValue_2= ruleIgnoreValue ) ;
    public final EObject ruleAbstractTextValue() throws RecognitionException {
        EObject current = null;

        EObject this_VarValue_0 = null;

        EObject this_ConstantText_1 = null;

        EObject this_IgnoreValue_2 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:938:28: ( (this_VarValue_0= ruleVarValue | this_ConstantText_1= ruleConstantText | this_IgnoreValue_2= ruleIgnoreValue ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:939:1: (this_VarValue_0= ruleVarValue | this_ConstantText_1= ruleConstantText | this_IgnoreValue_2= ruleIgnoreValue )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:939:1: (this_VarValue_0= ruleVarValue | this_ConstantText_1= ruleConstantText | this_IgnoreValue_2= ruleIgnoreValue )
            int alt16=3;
            switch ( input.LA(1) ) {
            case 33:
                {
                alt16=1;
                }
                break;
            case RULE_STRING:
                {
                alt16=2;
                }
                break;
            case 35:
                {
                alt16=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:940:5: this_VarValue_0= ruleVarValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractTextValueAccess().getVarValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleVarValue_in_ruleAbstractTextValue2034);
                    this_VarValue_0=ruleVarValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_VarValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:950:5: this_ConstantText_1= ruleConstantText
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractTextValueAccess().getConstantTextParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleConstantText_in_ruleAbstractTextValue2061);
                    this_ConstantText_1=ruleConstantText();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ConstantText_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:960:5: this_IgnoreValue_2= ruleIgnoreValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractTextValueAccess().getIgnoreValueParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIgnoreValue_in_ruleAbstractTextValue2088);
                    this_IgnoreValue_2=ruleIgnoreValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IgnoreValue_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractTextValue"


    // $ANTLR start "entryRuleVarValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:976:1: entryRuleVarValue returns [EObject current=null] : iv_ruleVarValue= ruleVarValue EOF ;
    public final EObject entryRuleVarValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVarValue = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:977:2: (iv_ruleVarValue= ruleVarValue EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:978:2: iv_ruleVarValue= ruleVarValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVarValueRule()); 
            }
            pushFollow(FOLLOW_ruleVarValue_in_entryRuleVarValue2123);
            iv_ruleVarValue=ruleVarValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVarValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVarValue2133); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVarValue"


    // $ANTLR start "ruleVarValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:985:1: ruleVarValue returns [EObject current=null] : (otherlv_0= '[' ( (lv_variable_1_0= ruleVarValueVariableDesc ) ) otherlv_2= ']' ) ;
    public final EObject ruleVarValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_variable_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:988:28: ( (otherlv_0= '[' ( (lv_variable_1_0= ruleVarValueVariableDesc ) ) otherlv_2= ']' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:989:1: (otherlv_0= '[' ( (lv_variable_1_0= ruleVarValueVariableDesc ) ) otherlv_2= ']' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:989:1: (otherlv_0= '[' ( (lv_variable_1_0= ruleVarValueVariableDesc ) ) otherlv_2= ']' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:989:3: otherlv_0= '[' ( (lv_variable_1_0= ruleVarValueVariableDesc ) ) otherlv_2= ']'
            {
            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleVarValue2170); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getVarValueAccess().getLeftSquareBracketKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:993:1: ( (lv_variable_1_0= ruleVarValueVariableDesc ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:994:1: (lv_variable_1_0= ruleVarValueVariableDesc )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:994:1: (lv_variable_1_0= ruleVarValueVariableDesc )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:995:3: lv_variable_1_0= ruleVarValueVariableDesc
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVarValueAccess().getVariableVarValueVariableDescParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVarValueVariableDesc_in_ruleVarValue2191);
            lv_variable_1_0=ruleVarValueVariableDesc();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVarValueRule());
              	        }
                     		set(
                     			current, 
                     			"variable",
                      		lv_variable_1_0, 
                      		"VarValueVariableDesc");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleVarValue2203); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getVarValueAccess().getRightSquareBracketKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVarValue"


    // $ANTLR start "entryRuleVarValueVariableDesc"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1023:1: entryRuleVarValueVariableDesc returns [EObject current=null] : iv_ruleVarValueVariableDesc= ruleVarValueVariableDesc EOF ;
    public final EObject entryRuleVarValueVariableDesc() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVarValueVariableDesc = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1024:2: (iv_ruleVarValueVariableDesc= ruleVarValueVariableDesc EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1025:2: iv_ruleVarValueVariableDesc= ruleVarValueVariableDesc EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVarValueVariableDescRule()); 
            }
            pushFollow(FOLLOW_ruleVarValueVariableDesc_in_entryRuleVarValueVariableDesc2239);
            iv_ruleVarValueVariableDesc=ruleVarValueVariableDesc();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVarValueVariableDesc; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVarValueVariableDesc2249); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVarValueVariableDesc"


    // $ANTLR start "ruleVarValueVariableDesc"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1032:1: ruleVarValueVariableDesc returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_writeable_1_0= ':' ) ) ( (lv_type_2_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleVarValueVariableDesc() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token lv_writeable_1_0=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1035:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_writeable_1_0= ':' ) ) ( (lv_type_2_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1036:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_writeable_1_0= ':' ) ) ( (lv_type_2_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1036:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_writeable_1_0= ':' ) ) ( (lv_type_2_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1036:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_writeable_1_0= ':' ) ) ( (lv_type_2_0= ruleJvmTypeReference ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1036:2: ( (lv_name_0_0= RULE_ID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1037:1: (lv_name_0_0= RULE_ID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1037:1: (lv_name_0_0= RULE_ID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1038:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVarValueVariableDesc2291); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getVarValueVariableDescAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVarValueVariableDescRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1054:2: ( (lv_writeable_1_0= ':' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1055:1: (lv_writeable_1_0= ':' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1055:1: (lv_writeable_1_0= ':' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1056:3: lv_writeable_1_0= ':'
            {
            lv_writeable_1_0=(Token)match(input,19,FOLLOW_19_in_ruleVarValueVariableDesc2314); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_writeable_1_0, grammarAccess.getVarValueVariableDescAccess().getWriteableColonKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVarValueVariableDescRule());
              	        }
                     		setWithLastConsumed(current, "writeable", true, ":");
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1069:2: ( (lv_type_2_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1070:1: (lv_type_2_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1070:1: (lv_type_2_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1071:3: lv_type_2_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVarValueVariableDescAccess().getTypeJvmTypeReferenceParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleVarValueVariableDesc2348);
            lv_type_2_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVarValueVariableDescRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_2_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVarValueVariableDesc"


    // $ANTLR start "entryRuleConstantText"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1095:1: entryRuleConstantText returns [EObject current=null] : iv_ruleConstantText= ruleConstantText EOF ;
    public final EObject entryRuleConstantText() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstantText = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1096:2: (iv_ruleConstantText= ruleConstantText EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1097:2: iv_ruleConstantText= ruleConstantText EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConstantTextRule()); 
            }
            pushFollow(FOLLOW_ruleConstantText_in_entryRuleConstantText2384);
            iv_ruleConstantText=ruleConstantText();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConstantText; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstantText2394); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstantText"


    // $ANTLR start "ruleConstantText"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1104:1: ruleConstantText returns [EObject current=null] : ( (lv_content_0_0= RULE_STRING ) ) ;
    public final EObject ruleConstantText() throws RecognitionException {
        EObject current = null;

        Token lv_content_0_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1107:28: ( ( (lv_content_0_0= RULE_STRING ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1108:1: ( (lv_content_0_0= RULE_STRING ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1108:1: ( (lv_content_0_0= RULE_STRING ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1109:1: (lv_content_0_0= RULE_STRING )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1109:1: (lv_content_0_0= RULE_STRING )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1110:3: lv_content_0_0= RULE_STRING
            {
            lv_content_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConstantText2435); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_content_0_0, grammarAccess.getConstantTextAccess().getContentSTRINGTerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getConstantTextRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"content",
                      		lv_content_0_0, 
                      		"STRING");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstantText"


    // $ANTLR start "entryRuleIgnoreValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1134:1: entryRuleIgnoreValue returns [EObject current=null] : iv_ruleIgnoreValue= ruleIgnoreValue EOF ;
    public final EObject entryRuleIgnoreValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIgnoreValue = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1135:2: (iv_ruleIgnoreValue= ruleIgnoreValue EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1136:2: iv_ruleIgnoreValue= ruleIgnoreValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIgnoreValueRule()); 
            }
            pushFollow(FOLLOW_ruleIgnoreValue_in_entryRuleIgnoreValue2475);
            iv_ruleIgnoreValue=ruleIgnoreValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIgnoreValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIgnoreValue2485); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIgnoreValue"


    // $ANTLR start "ruleIgnoreValue"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1143:1: ruleIgnoreValue returns [EObject current=null] : ( (lv_ignore_0_0= 'Ignore' ) ) ;
    public final EObject ruleIgnoreValue() throws RecognitionException {
        EObject current = null;

        Token lv_ignore_0_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1146:28: ( ( (lv_ignore_0_0= 'Ignore' ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1147:1: ( (lv_ignore_0_0= 'Ignore' ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1147:1: ( (lv_ignore_0_0= 'Ignore' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1148:1: (lv_ignore_0_0= 'Ignore' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1148:1: (lv_ignore_0_0= 'Ignore' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1149:3: lv_ignore_0_0= 'Ignore'
            {
            lv_ignore_0_0=(Token)match(input,35,FOLLOW_35_in_ruleIgnoreValue2527); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_ignore_0_0, grammarAccess.getIgnoreValueAccess().getIgnoreIgnoreKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getIgnoreValueRule());
              	        }
                     		setWithLastConsumed(current, "ignore", true, "Ignore");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIgnoreValue"


    // $ANTLR start "entryRulePlainParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1170:1: entryRulePlainParser returns [EObject current=null] : iv_rulePlainParser= rulePlainParser EOF ;
    public final EObject entryRulePlainParser() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlainParser = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1171:2: (iv_rulePlainParser= rulePlainParser EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1172:2: iv_rulePlainParser= rulePlainParser EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPlainParserRule()); 
            }
            pushFollow(FOLLOW_rulePlainParser_in_entryRulePlainParser2575);
            iv_rulePlainParser=rulePlainParser();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePlainParser; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePlainParser2585); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlainParser"


    // $ANTLR start "rulePlainParser"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1179:1: rulePlainParser returns [EObject current=null] : (otherlv_0= 'plain' otherlv_1= '{' (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )* otherlv_4= 'logic' ( (lv_logic_5_0= ruleXBlockExpression ) ) otherlv_6= '}' ) ;
    public final EObject rulePlainParser() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_ivar_3_0 = null;

        EObject lv_logic_5_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1182:28: ( (otherlv_0= 'plain' otherlv_1= '{' (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )* otherlv_4= 'logic' ( (lv_logic_5_0= ruleXBlockExpression ) ) otherlv_6= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1183:1: (otherlv_0= 'plain' otherlv_1= '{' (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )* otherlv_4= 'logic' ( (lv_logic_5_0= ruleXBlockExpression ) ) otherlv_6= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1183:1: (otherlv_0= 'plain' otherlv_1= '{' (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )* otherlv_4= 'logic' ( (lv_logic_5_0= ruleXBlockExpression ) ) otherlv_6= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1183:3: otherlv_0= 'plain' otherlv_1= '{' (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )* otherlv_4= 'logic' ( (lv_logic_5_0= ruleXBlockExpression ) ) otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_36_in_rulePlainParser2622); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPlainParserAccess().getPlainKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,21,FOLLOW_21_in_rulePlainParser2634); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPlainParserAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1191:1: (otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==29) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1191:3: otherlv_2= 'ivar' ( (lv_ivar_3_0= ruleXVariableDeclaration ) )
            	    {
            	    otherlv_2=(Token)match(input,29,FOLLOW_29_in_rulePlainParser2647); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getPlainParserAccess().getIvarKeyword_2_0());
            	          
            	    }
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1195:1: ( (lv_ivar_3_0= ruleXVariableDeclaration ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1196:1: (lv_ivar_3_0= ruleXVariableDeclaration )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1196:1: (lv_ivar_3_0= ruleXVariableDeclaration )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1197:3: lv_ivar_3_0= ruleXVariableDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPlainParserAccess().getIvarXVariableDeclarationParserRuleCall_2_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXVariableDeclaration_in_rulePlainParser2668);
            	    lv_ivar_3_0=ruleXVariableDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPlainParserRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ivar",
            	              		lv_ivar_3_0, 
            	              		"XVariableDeclaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);

            otherlv_4=(Token)match(input,37,FOLLOW_37_in_rulePlainParser2682); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getPlainParserAccess().getLogicKeyword_3());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1217:1: ( (lv_logic_5_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1218:1: (lv_logic_5_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1218:1: (lv_logic_5_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1219:3: lv_logic_5_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPlainParserAccess().getLogicXBlockExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_rulePlainParser2703);
            lv_logic_5_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPlainParserRule());
              	        }
                     		set(
                     			current, 
                     			"logic",
                      		lv_logic_5_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,22,FOLLOW_22_in_rulePlainParser2715); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getPlainParserAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlainParser"


    // $ANTLR start "entryRuleDecScope"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1247:1: entryRuleDecScope returns [EObject current=null] : iv_ruleDecScope= ruleDecScope EOF ;
    public final EObject entryRuleDecScope() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecScope = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1248:2: (iv_ruleDecScope= ruleDecScope EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1249:2: iv_ruleDecScope= ruleDecScope EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDecScopeRule()); 
            }
            pushFollow(FOLLOW_ruleDecScope_in_entryRuleDecScope2751);
            iv_ruleDecScope=ruleDecScope();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDecScope; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecScope2761); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecScope"


    // $ANTLR start "ruleDecScope"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1256:1: ruleDecScope returns [EObject current=null] : ( ( (lv_var_0_0= ruleVariableDec ) ) ( (lv_scope_1_0= ruleScope ) )? otherlv_2= ';' ) ;
    public final EObject ruleDecScope() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_var_0_0 = null;

        EObject lv_scope_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1259:28: ( ( ( (lv_var_0_0= ruleVariableDec ) ) ( (lv_scope_1_0= ruleScope ) )? otherlv_2= ';' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1260:1: ( ( (lv_var_0_0= ruleVariableDec ) ) ( (lv_scope_1_0= ruleScope ) )? otherlv_2= ';' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1260:1: ( ( (lv_var_0_0= ruleVariableDec ) ) ( (lv_scope_1_0= ruleScope ) )? otherlv_2= ';' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1260:2: ( (lv_var_0_0= ruleVariableDec ) ) ( (lv_scope_1_0= ruleScope ) )? otherlv_2= ';'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1260:2: ( (lv_var_0_0= ruleVariableDec ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1261:1: (lv_var_0_0= ruleVariableDec )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1261:1: (lv_var_0_0= ruleVariableDec )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1262:3: lv_var_0_0= ruleVariableDec
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDecScopeAccess().getVarVariableDecParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVariableDec_in_ruleDecScope2807);
            lv_var_0_0=ruleVariableDec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDecScopeRule());
              	        }
                     		set(
                     			current, 
                     			"var",
                      		lv_var_0_0, 
                      		"VariableDec");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1278:2: ( (lv_scope_1_0= ruleScope ) )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==40) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1279:1: (lv_scope_1_0= ruleScope )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1279:1: (lv_scope_1_0= ruleScope )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1280:3: lv_scope_1_0= ruleScope
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecScopeAccess().getScopeScopeParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleScope_in_ruleDecScope2828);
                    lv_scope_1_0=ruleScope();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDecScopeRule());
                      	        }
                             		set(
                             			current, 
                             			"scope",
                              		lv_scope_1_0, 
                              		"Scope");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,38,FOLLOW_38_in_ruleDecScope2841); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getDecScopeAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecScope"


    // $ANTLR start "entryRuleVariableDec"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1308:1: entryRuleVariableDec returns [EObject current=null] : iv_ruleVariableDec= ruleVariableDec EOF ;
    public final EObject entryRuleVariableDec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariableDec = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1309:2: (iv_ruleVariableDec= ruleVariableDec EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1310:2: iv_ruleVariableDec= ruleVariableDec EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVariableDecRule()); 
            }
            pushFollow(FOLLOW_ruleVariableDec_in_entryRuleVariableDec2877);
            iv_ruleVariableDec=ruleVariableDec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVariableDec; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariableDec2887); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVariableDec"


    // $ANTLR start "ruleVariableDec"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1317:1: ruleVariableDec returns [EObject current=null] : (otherlv_0= 'var' ( (lv_name_1_0= RULE_ID ) ) ( (lv_writeable_2_0= ':' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleVariableDec() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token lv_writeable_2_0=null;
        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1320:28: ( (otherlv_0= 'var' ( (lv_name_1_0= RULE_ID ) ) ( (lv_writeable_2_0= ':' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1321:1: (otherlv_0= 'var' ( (lv_name_1_0= RULE_ID ) ) ( (lv_writeable_2_0= ':' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1321:1: (otherlv_0= 'var' ( (lv_name_1_0= RULE_ID ) ) ( (lv_writeable_2_0= ':' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1321:3: otherlv_0= 'var' ( (lv_name_1_0= RULE_ID ) ) ( (lv_writeable_2_0= ':' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleVariableDec2924); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getVariableDecAccess().getVarKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1325:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1326:1: (lv_name_1_0= RULE_ID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1326:1: (lv_name_1_0= RULE_ID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1327:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVariableDec2941); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getVariableDecAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVariableDecRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1343:2: ( (lv_writeable_2_0= ':' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1344:1: (lv_writeable_2_0= ':' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1344:1: (lv_writeable_2_0= ':' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1345:3: lv_writeable_2_0= ':'
            {
            lv_writeable_2_0=(Token)match(input,19,FOLLOW_19_in_ruleVariableDec2964); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_writeable_2_0, grammarAccess.getVariableDecAccess().getWriteableColonKeyword_2_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVariableDecRule());
              	        }
                     		setWithLastConsumed(current, "writeable", true, ":");
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1358:2: ( (lv_type_3_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1359:1: (lv_type_3_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1359:1: (lv_type_3_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1360:3: lv_type_3_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVariableDecAccess().getTypeJvmTypeReferenceParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleVariableDec2998);
            lv_type_3_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVariableDecRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVariableDec"


    // $ANTLR start "entryRuleScope"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1384:1: entryRuleScope returns [EObject current=null] : iv_ruleScope= ruleScope EOF ;
    public final EObject entryRuleScope() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScope = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1385:2: (iv_ruleScope= ruleScope EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1386:2: iv_ruleScope= ruleScope EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getScopeRule()); 
            }
            pushFollow(FOLLOW_ruleScope_in_entryRuleScope3034);
            iv_ruleScope=ruleScope();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleScope; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleScope3044); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScope"


    // $ANTLR start "ruleScope"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1393:1: ruleScope returns [EObject current=null] : (otherlv_0= 'in' ( (lv_expr_1_0= ruleXMemberFeatureCall ) ) ( (lv_enforce_2_0= 'enforced' ) )? ) ;
    public final EObject ruleScope() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_enforce_2_0=null;
        EObject lv_expr_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1396:28: ( (otherlv_0= 'in' ( (lv_expr_1_0= ruleXMemberFeatureCall ) ) ( (lv_enforce_2_0= 'enforced' ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1397:1: (otherlv_0= 'in' ( (lv_expr_1_0= ruleXMemberFeatureCall ) ) ( (lv_enforce_2_0= 'enforced' ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1397:1: (otherlv_0= 'in' ( (lv_expr_1_0= ruleXMemberFeatureCall ) ) ( (lv_enforce_2_0= 'enforced' ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1397:3: otherlv_0= 'in' ( (lv_expr_1_0= ruleXMemberFeatureCall ) ) ( (lv_enforce_2_0= 'enforced' ) )?
            {
            otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleScope3081); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getScopeAccess().getInKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1401:1: ( (lv_expr_1_0= ruleXMemberFeatureCall ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1402:1: (lv_expr_1_0= ruleXMemberFeatureCall )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1402:1: (lv_expr_1_0= ruleXMemberFeatureCall )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1403:3: lv_expr_1_0= ruleXMemberFeatureCall
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getScopeAccess().getExprXMemberFeatureCallParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleScope3102);
            lv_expr_1_0=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getScopeRule());
              	        }
                     		set(
                     			current, 
                     			"expr",
                      		lv_expr_1_0, 
                      		"XMemberFeatureCall");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1419:2: ( (lv_enforce_2_0= 'enforced' ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==41) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1420:1: (lv_enforce_2_0= 'enforced' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1420:1: (lv_enforce_2_0= 'enforced' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1421:3: lv_enforce_2_0= 'enforced'
                    {
                    lv_enforce_2_0=(Token)match(input,41,FOLLOW_41_in_ruleScope3120); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_enforce_2_0, grammarAccess.getScopeAccess().getEnforceEnforcedKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getScopeRule());
                      	        }
                             		setWithLastConsumed(current, "enforce", true, "enforced");
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScope"


    // $ANTLR start "entryRuleAPI"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1442:1: entryRuleAPI returns [EObject current=null] : iv_ruleAPI= ruleAPI EOF ;
    public final EObject entryRuleAPI() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAPI = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1443:2: (iv_ruleAPI= ruleAPI EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1444:2: iv_ruleAPI= ruleAPI EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAPIRule()); 
            }
            pushFollow(FOLLOW_ruleAPI_in_entryRuleAPI3170);
            iv_ruleAPI=ruleAPI();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAPI; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAPI3180); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAPI"


    // $ANTLR start "ruleAPI"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1451:1: ruleAPI returns [EObject current=null] : (otherlv_0= 'API' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_mapping_4_0= ruleMapping ) )* ( (lv_invocation_5_0= ruleInvocation ) )* otherlv_6= '}' ) ;
    public final EObject ruleAPI() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_helper_3_0 = null;

        EObject lv_mapping_4_0 = null;

        EObject lv_invocation_5_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1454:28: ( (otherlv_0= 'API' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_mapping_4_0= ruleMapping ) )* ( (lv_invocation_5_0= ruleInvocation ) )* otherlv_6= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1455:1: (otherlv_0= 'API' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_mapping_4_0= ruleMapping ) )* ( (lv_invocation_5_0= ruleInvocation ) )* otherlv_6= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1455:1: (otherlv_0= 'API' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_mapping_4_0= ruleMapping ) )* ( (lv_invocation_5_0= ruleInvocation ) )* otherlv_6= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1455:3: otherlv_0= 'API' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_helper_3_0= ruleHelper ) )* ( (lv_mapping_4_0= ruleMapping ) )* ( (lv_invocation_5_0= ruleInvocation ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleAPI3217); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAPIAccess().getAPIKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1459:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1460:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1460:1: (lv_name_1_0= ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1461:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAPIAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleAPI3238);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAPIRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleAPI3250); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAPIAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1481:1: ( (lv_helper_3_0= ruleHelper ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==15) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1482:1: (lv_helper_3_0= ruleHelper )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1482:1: (lv_helper_3_0= ruleHelper )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1483:3: lv_helper_3_0= ruleHelper
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAPIAccess().getHelperHelperParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleHelper_in_ruleAPI3271);
            	    lv_helper_3_0=ruleHelper();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAPIRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"helper",
            	              		lv_helper_3_0, 
            	              		"Helper");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1499:3: ( (lv_mapping_4_0= ruleMapping ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==43) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1500:1: (lv_mapping_4_0= ruleMapping )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1500:1: (lv_mapping_4_0= ruleMapping )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1501:3: lv_mapping_4_0= ruleMapping
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAPIAccess().getMappingMappingParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleMapping_in_ruleAPI3293);
            	    lv_mapping_4_0=ruleMapping();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAPIRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"mapping",
            	              		lv_mapping_4_0, 
            	              		"Mapping");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1517:3: ( (lv_invocation_5_0= ruleInvocation ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==49) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1518:1: (lv_invocation_5_0= ruleInvocation )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1518:1: (lv_invocation_5_0= ruleInvocation )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1519:3: lv_invocation_5_0= ruleInvocation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAPIAccess().getInvocationInvocationParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleInvocation_in_ruleAPI3315);
            	    lv_invocation_5_0=ruleInvocation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAPIRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"invocation",
            	              		lv_invocation_5_0, 
            	              		"Invocation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            otherlv_6=(Token)match(input,22,FOLLOW_22_in_ruleAPI3328); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getAPIAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAPI"


    // $ANTLR start "entryRuleMapping"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1547:1: entryRuleMapping returns [EObject current=null] : iv_ruleMapping= ruleMapping EOF ;
    public final EObject entryRuleMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMapping = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1548:2: (iv_ruleMapping= ruleMapping EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1549:2: iv_ruleMapping= ruleMapping EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMappingRule()); 
            }
            pushFollow(FOLLOW_ruleMapping_in_entryRuleMapping3364);
            iv_ruleMapping=ruleMapping();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMapping; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleMapping3374); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMapping"


    // $ANTLR start "ruleMapping"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1556:1: ruleMapping returns [EObject current=null] : (otherlv_0= 'mapping' ( (lv_mType_1_0= ruleJvmTypeReference ) ) otherlv_2= '=>' ( (lv_sType_3_0= ruleJvmTypeReference ) ) ( (lv_unique_4_0= 'unique' ) )? otherlv_5= '{' (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )? ( (lv_subType_8_0= ruleSubType ) )* otherlv_9= 'newImage' ( (lv_newImage_10_0= ruleXBlockExpression ) ) otherlv_11= '}' ) ;
    public final EObject ruleMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_unique_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        EObject lv_mType_1_0 = null;

        EObject lv_sType_3_0 = null;

        EObject lv_identify_7_0 = null;

        EObject lv_subType_8_0 = null;

        EObject lv_newImage_10_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1559:28: ( (otherlv_0= 'mapping' ( (lv_mType_1_0= ruleJvmTypeReference ) ) otherlv_2= '=>' ( (lv_sType_3_0= ruleJvmTypeReference ) ) ( (lv_unique_4_0= 'unique' ) )? otherlv_5= '{' (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )? ( (lv_subType_8_0= ruleSubType ) )* otherlv_9= 'newImage' ( (lv_newImage_10_0= ruleXBlockExpression ) ) otherlv_11= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1560:1: (otherlv_0= 'mapping' ( (lv_mType_1_0= ruleJvmTypeReference ) ) otherlv_2= '=>' ( (lv_sType_3_0= ruleJvmTypeReference ) ) ( (lv_unique_4_0= 'unique' ) )? otherlv_5= '{' (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )? ( (lv_subType_8_0= ruleSubType ) )* otherlv_9= 'newImage' ( (lv_newImage_10_0= ruleXBlockExpression ) ) otherlv_11= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1560:1: (otherlv_0= 'mapping' ( (lv_mType_1_0= ruleJvmTypeReference ) ) otherlv_2= '=>' ( (lv_sType_3_0= ruleJvmTypeReference ) ) ( (lv_unique_4_0= 'unique' ) )? otherlv_5= '{' (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )? ( (lv_subType_8_0= ruleSubType ) )* otherlv_9= 'newImage' ( (lv_newImage_10_0= ruleXBlockExpression ) ) otherlv_11= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1560:3: otherlv_0= 'mapping' ( (lv_mType_1_0= ruleJvmTypeReference ) ) otherlv_2= '=>' ( (lv_sType_3_0= ruleJvmTypeReference ) ) ( (lv_unique_4_0= 'unique' ) )? otherlv_5= '{' (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )? ( (lv_subType_8_0= ruleSubType ) )* otherlv_9= 'newImage' ( (lv_newImage_10_0= ruleXBlockExpression ) ) otherlv_11= '}'
            {
            otherlv_0=(Token)match(input,43,FOLLOW_43_in_ruleMapping3411); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getMappingAccess().getMappingKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1564:1: ( (lv_mType_1_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1565:1: (lv_mType_1_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1565:1: (lv_mType_1_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1566:3: lv_mType_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getMappingAccess().getMTypeJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleMapping3432);
            lv_mType_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getMappingRule());
              	        }
                     		set(
                     			current, 
                     			"mType",
                      		lv_mType_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,44,FOLLOW_44_in_ruleMapping3444); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getMappingAccess().getEqualsSignGreaterThanSignKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1586:1: ( (lv_sType_3_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1587:1: (lv_sType_3_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1587:1: (lv_sType_3_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1588:3: lv_sType_3_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getMappingAccess().getSTypeJvmTypeReferenceParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleMapping3465);
            lv_sType_3_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getMappingRule());
              	        }
                     		set(
                     			current, 
                     			"sType",
                      		lv_sType_3_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1604:2: ( (lv_unique_4_0= 'unique' ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==45) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1605:1: (lv_unique_4_0= 'unique' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1605:1: (lv_unique_4_0= 'unique' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1606:3: lv_unique_4_0= 'unique'
                    {
                    lv_unique_4_0=(Token)match(input,45,FOLLOW_45_in_ruleMapping3483); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_unique_4_0, grammarAccess.getMappingAccess().getUniqueUniqueKeyword_4_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMappingRule());
                      	        }
                             		setWithLastConsumed(current, "unique", true, "unique");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleMapping3509); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getMappingAccess().getLeftCurlyBracketKeyword_5());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1623:1: (otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) ) )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==46) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1623:3: otherlv_6= 'identify' ( (lv_identify_7_0= ruleXBlockExpression ) )
                    {
                    otherlv_6=(Token)match(input,46,FOLLOW_46_in_ruleMapping3522); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getMappingAccess().getIdentifyKeyword_6_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1627:1: ( (lv_identify_7_0= ruleXBlockExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1628:1: (lv_identify_7_0= ruleXBlockExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1628:1: (lv_identify_7_0= ruleXBlockExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1629:3: lv_identify_7_0= ruleXBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getMappingAccess().getIdentifyXBlockExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXBlockExpression_in_ruleMapping3543);
                    lv_identify_7_0=ruleXBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getMappingRule());
                      	        }
                             		set(
                             			current, 
                             			"identify",
                              		lv_identify_7_0, 
                              		"XBlockExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1645:4: ( (lv_subType_8_0= ruleSubType ) )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==48) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1646:1: (lv_subType_8_0= ruleSubType )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1646:1: (lv_subType_8_0= ruleSubType )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1647:3: lv_subType_8_0= ruleSubType
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getMappingAccess().getSubTypeSubTypeParserRuleCall_7_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleSubType_in_ruleMapping3566);
            	    lv_subType_8_0=ruleSubType();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getMappingRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"subType",
            	              		lv_subType_8_0, 
            	              		"SubType");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            otherlv_9=(Token)match(input,47,FOLLOW_47_in_ruleMapping3579); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getMappingAccess().getNewImageKeyword_8());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1667:1: ( (lv_newImage_10_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1668:1: (lv_newImage_10_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1668:1: (lv_newImage_10_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1669:3: lv_newImage_10_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getMappingAccess().getNewImageXBlockExpressionParserRuleCall_9_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleMapping3600);
            lv_newImage_10_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getMappingRule());
              	        }
                     		set(
                     			current, 
                     			"newImage",
                      		lv_newImage_10_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_11=(Token)match(input,22,FOLLOW_22_in_ruleMapping3612); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_11, grammarAccess.getMappingAccess().getRightCurlyBracketKeyword_10());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMapping"


    // $ANTLR start "entryRuleSubType"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1697:1: entryRuleSubType returns [EObject current=null] : iv_ruleSubType= ruleSubType EOF ;
    public final EObject entryRuleSubType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubType = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1698:2: (iv_ruleSubType= ruleSubType EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1699:2: iv_ruleSubType= ruleSubType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSubTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSubType_in_entryRuleSubType3648);
            iv_ruleSubType=ruleSubType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSubType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubType3658); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubType"


    // $ANTLR start "ruleSubType"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1706:1: ruleSubType returns [EObject current=null] : (otherlv_0= 'subType' ( (lv_type_1_0= ruleJvmTypeReference ) ) ( (lv_pre_2_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleSubType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_type_1_0 = null;

        EObject lv_pre_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1709:28: ( (otherlv_0= 'subType' ( (lv_type_1_0= ruleJvmTypeReference ) ) ( (lv_pre_2_0= ruleXBlockExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1710:1: (otherlv_0= 'subType' ( (lv_type_1_0= ruleJvmTypeReference ) ) ( (lv_pre_2_0= ruleXBlockExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1710:1: (otherlv_0= 'subType' ( (lv_type_1_0= ruleJvmTypeReference ) ) ( (lv_pre_2_0= ruleXBlockExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1710:3: otherlv_0= 'subType' ( (lv_type_1_0= ruleJvmTypeReference ) ) ( (lv_pre_2_0= ruleXBlockExpression ) )
            {
            otherlv_0=(Token)match(input,48,FOLLOW_48_in_ruleSubType3695); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSubTypeAccess().getSubTypeKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1714:1: ( (lv_type_1_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1715:1: (lv_type_1_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1715:1: (lv_type_1_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1716:3: lv_type_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSubTypeAccess().getTypeJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleSubType3716);
            lv_type_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSubTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1732:2: ( (lv_pre_2_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1733:1: (lv_pre_2_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1733:1: (lv_pre_2_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1734:3: lv_pre_2_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSubTypeAccess().getPreXBlockExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleSubType3737);
            lv_pre_2_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSubTypeRule());
              	        }
                     		set(
                     			current, 
                     			"pre",
                      		lv_pre_2_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubType"


    // $ANTLR start "entryRuleInvocation"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1758:1: entryRuleInvocation returns [EObject current=null] : iv_ruleInvocation= ruleInvocation EOF ;
    public final EObject entryRuleInvocation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInvocation = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1759:2: (iv_ruleInvocation= ruleInvocation EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1760:2: iv_ruleInvocation= ruleInvocation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInvocationRule()); 
            }
            pushFollow(FOLLOW_ruleInvocation_in_entryRuleInvocation3773);
            iv_ruleInvocation=ruleInvocation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInvocation; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleInvocation3783); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInvocation"


    // $ANTLR start "ruleInvocation"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1767:1: ruleInvocation returns [EObject current=null] : (otherlv_0= 'invocation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_variable_3_0= ruleVariableDec ) )* ( (lv_operation_4_0= ruleOperationPointCut ) )* otherlv_5= 'pre' ( (lv_pre_6_0= ruleXBlockExpression ) ) otherlv_7= 'invoke' (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )? ( (lv_invoke_10_0= ruleXBlockExpression ) ) otherlv_11= 'post' otherlv_12= '(' ( (lv_postpara_13_0= ruleJvmFormalParameter ) ) otherlv_14= ')' ( (lv_post_15_0= ruleXBlockExpression ) ) otherlv_16= '}' ) ;
    public final EObject ruleInvocation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_variable_3_0 = null;

        EObject lv_operation_4_0 = null;

        EObject lv_pre_6_0 = null;

        EObject lv_retType_9_0 = null;

        EObject lv_invoke_10_0 = null;

        EObject lv_postpara_13_0 = null;

        EObject lv_post_15_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1770:28: ( (otherlv_0= 'invocation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_variable_3_0= ruleVariableDec ) )* ( (lv_operation_4_0= ruleOperationPointCut ) )* otherlv_5= 'pre' ( (lv_pre_6_0= ruleXBlockExpression ) ) otherlv_7= 'invoke' (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )? ( (lv_invoke_10_0= ruleXBlockExpression ) ) otherlv_11= 'post' otherlv_12= '(' ( (lv_postpara_13_0= ruleJvmFormalParameter ) ) otherlv_14= ')' ( (lv_post_15_0= ruleXBlockExpression ) ) otherlv_16= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1771:1: (otherlv_0= 'invocation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_variable_3_0= ruleVariableDec ) )* ( (lv_operation_4_0= ruleOperationPointCut ) )* otherlv_5= 'pre' ( (lv_pre_6_0= ruleXBlockExpression ) ) otherlv_7= 'invoke' (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )? ( (lv_invoke_10_0= ruleXBlockExpression ) ) otherlv_11= 'post' otherlv_12= '(' ( (lv_postpara_13_0= ruleJvmFormalParameter ) ) otherlv_14= ')' ( (lv_post_15_0= ruleXBlockExpression ) ) otherlv_16= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1771:1: (otherlv_0= 'invocation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_variable_3_0= ruleVariableDec ) )* ( (lv_operation_4_0= ruleOperationPointCut ) )* otherlv_5= 'pre' ( (lv_pre_6_0= ruleXBlockExpression ) ) otherlv_7= 'invoke' (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )? ( (lv_invoke_10_0= ruleXBlockExpression ) ) otherlv_11= 'post' otherlv_12= '(' ( (lv_postpara_13_0= ruleJvmFormalParameter ) ) otherlv_14= ')' ( (lv_post_15_0= ruleXBlockExpression ) ) otherlv_16= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1771:3: otherlv_0= 'invocation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_variable_3_0= ruleVariableDec ) )* ( (lv_operation_4_0= ruleOperationPointCut ) )* otherlv_5= 'pre' ( (lv_pre_6_0= ruleXBlockExpression ) ) otherlv_7= 'invoke' (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )? ( (lv_invoke_10_0= ruleXBlockExpression ) ) otherlv_11= 'post' otherlv_12= '(' ( (lv_postpara_13_0= ruleJvmFormalParameter ) ) otherlv_14= ')' ( (lv_post_15_0= ruleXBlockExpression ) ) otherlv_16= '}'
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleInvocation3820); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getInvocationAccess().getInvocationKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1775:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1776:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1776:1: (lv_name_1_0= ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1777:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInvocationAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleInvocation3841);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInvocationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleInvocation3853); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getInvocationAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1797:1: ( (lv_variable_3_0= ruleVariableDec ) )*
            loop26:
            do {
                int alt26=2;
                int LA26_0 = input.LA(1);

                if ( (LA26_0==39) ) {
                    alt26=1;
                }


                switch (alt26) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1798:1: (lv_variable_3_0= ruleVariableDec )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1798:1: (lv_variable_3_0= ruleVariableDec )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1799:3: lv_variable_3_0= ruleVariableDec
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getInvocationAccess().getVariableVariableDecParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleVariableDec_in_ruleInvocation3874);
            	    lv_variable_3_0=ruleVariableDec();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getInvocationRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"variable",
            	              		lv_variable_3_0, 
            	              		"VariableDec");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop26;
                }
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1815:3: ( (lv_operation_4_0= ruleOperationPointCut ) )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==52) ) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1816:1: (lv_operation_4_0= ruleOperationPointCut )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1816:1: (lv_operation_4_0= ruleOperationPointCut )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1817:3: lv_operation_4_0= ruleOperationPointCut
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getInvocationAccess().getOperationOperationPointCutParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOperationPointCut_in_ruleInvocation3896);
            	    lv_operation_4_0=ruleOperationPointCut();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getInvocationRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"operation",
            	              		lv_operation_4_0, 
            	              		"OperationPointCut");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);

            otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleInvocation3909); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getInvocationAccess().getPreKeyword_5());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1837:1: ( (lv_pre_6_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1838:1: (lv_pre_6_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1838:1: (lv_pre_6_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1839:3: lv_pre_6_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInvocationAccess().getPreXBlockExpressionParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleInvocation3930);
            lv_pre_6_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInvocationRule());
              	        }
                     		set(
                     			current, 
                     			"pre",
                      		lv_pre_6_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,50,FOLLOW_50_in_ruleInvocation3942); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getInvocationAccess().getInvokeKeyword_7());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1859:1: (otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==51) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1859:3: otherlv_8= 'returning' ( (lv_retType_9_0= ruleJvmTypeReference ) )
                    {
                    otherlv_8=(Token)match(input,51,FOLLOW_51_in_ruleInvocation3955); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getInvocationAccess().getReturningKeyword_8_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1863:1: ( (lv_retType_9_0= ruleJvmTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1864:1: (lv_retType_9_0= ruleJvmTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1864:1: (lv_retType_9_0= ruleJvmTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1865:3: lv_retType_9_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getInvocationAccess().getRetTypeJvmTypeReferenceParserRuleCall_8_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleInvocation3976);
                    lv_retType_9_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getInvocationRule());
                      	        }
                             		set(
                             			current, 
                             			"retType",
                              		lv_retType_9_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1881:4: ( (lv_invoke_10_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1882:1: (lv_invoke_10_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1882:1: (lv_invoke_10_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1883:3: lv_invoke_10_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInvocationAccess().getInvokeXBlockExpressionParserRuleCall_9_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleInvocation3999);
            lv_invoke_10_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInvocationRule());
              	        }
                     		set(
                     			current, 
                     			"invoke",
                      		lv_invoke_10_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_11=(Token)match(input,26,FOLLOW_26_in_ruleInvocation4011); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_11, grammarAccess.getInvocationAccess().getPostKeyword_10());
                  
            }
            otherlv_12=(Token)match(input,16,FOLLOW_16_in_ruleInvocation4023); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_12, grammarAccess.getInvocationAccess().getLeftParenthesisKeyword_11());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1907:1: ( (lv_postpara_13_0= ruleJvmFormalParameter ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1908:1: (lv_postpara_13_0= ruleJvmFormalParameter )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1908:1: (lv_postpara_13_0= ruleJvmFormalParameter )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1909:3: lv_postpara_13_0= ruleJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInvocationAccess().getPostparaJvmFormalParameterParserRuleCall_12_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleInvocation4044);
            lv_postpara_13_0=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInvocationRule());
              	        }
                     		set(
                     			current, 
                     			"postpara",
                      		lv_postpara_13_0, 
                      		"JvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_14=(Token)match(input,18,FOLLOW_18_in_ruleInvocation4056); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_14, grammarAccess.getInvocationAccess().getRightParenthesisKeyword_13());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1929:1: ( (lv_post_15_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1930:1: (lv_post_15_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1930:1: (lv_post_15_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1931:3: lv_post_15_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInvocationAccess().getPostXBlockExpressionParserRuleCall_14_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleInvocation4077);
            lv_post_15_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInvocationRule());
              	        }
                     		set(
                     			current, 
                     			"post",
                      		lv_post_15_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_16=(Token)match(input,22,FOLLOW_22_in_ruleInvocation4089); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_16, grammarAccess.getInvocationAccess().getRightCurlyBracketKeyword_15());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInvocation"


    // $ANTLR start "entryRuleOperationPointCut"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1959:1: entryRuleOperationPointCut returns [EObject current=null] : iv_ruleOperationPointCut= ruleOperationPointCut EOF ;
    public final EObject entryRuleOperationPointCut() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationPointCut = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1960:2: (iv_ruleOperationPointCut= ruleOperationPointCut EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1961:2: iv_ruleOperationPointCut= ruleOperationPointCut EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOperationPointCutRule()); 
            }
            pushFollow(FOLLOW_ruleOperationPointCut_in_entryRuleOperationPointCut4125);
            iv_ruleOperationPointCut=ruleOperationPointCut();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOperationPointCut; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOperationPointCut4135); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOperationPointCut"


    // $ANTLR start "ruleOperationPointCut"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1968:1: ruleOperationPointCut returns [EObject current=null] : (otherlv_0= 'operation' ( (lv_opType_1_0= ruleOperationType ) ) ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' ) otherlv_4= '->' ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' ) ( (lv_pre_7_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleOperationPointCut() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_feature_5_0=null;
        Token otherlv_6=null;
        Enumerator lv_opType_1_0 = null;

        EObject lv_elemType_2_0 = null;

        EObject lv_pre_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1971:28: ( (otherlv_0= 'operation' ( (lv_opType_1_0= ruleOperationType ) ) ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' ) otherlv_4= '->' ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' ) ( (lv_pre_7_0= ruleXBlockExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1972:1: (otherlv_0= 'operation' ( (lv_opType_1_0= ruleOperationType ) ) ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' ) otherlv_4= '->' ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' ) ( (lv_pre_7_0= ruleXBlockExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1972:1: (otherlv_0= 'operation' ( (lv_opType_1_0= ruleOperationType ) ) ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' ) otherlv_4= '->' ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' ) ( (lv_pre_7_0= ruleXBlockExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1972:3: otherlv_0= 'operation' ( (lv_opType_1_0= ruleOperationType ) ) ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' ) otherlv_4= '->' ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' ) ( (lv_pre_7_0= ruleXBlockExpression ) )
            {
            otherlv_0=(Token)match(input,52,FOLLOW_52_in_ruleOperationPointCut4172); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getOperationPointCutAccess().getOperationKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1976:1: ( (lv_opType_1_0= ruleOperationType ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1977:1: (lv_opType_1_0= ruleOperationType )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1977:1: (lv_opType_1_0= ruleOperationType )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1978:3: lv_opType_1_0= ruleOperationType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationPointCutAccess().getOpTypeOperationTypeEnumRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleOperationType_in_ruleOperationPointCut4193);
            lv_opType_1_0=ruleOperationType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationPointCutRule());
              	        }
                     		set(
                     			current, 
                     			"opType",
                      		lv_opType_1_0, 
                      		"OperationType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1994:2: ( ( (lv_elemType_2_0= ruleJvmTypeReference ) ) | otherlv_3= '*' )
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_ID||LA29_0==16||LA29_0==44) ) {
                alt29=1;
            }
            else if ( (LA29_0==14) ) {
                alt29=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 29, 0, input);

                throw nvae;
            }
            switch (alt29) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1994:3: ( (lv_elemType_2_0= ruleJvmTypeReference ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1994:3: ( (lv_elemType_2_0= ruleJvmTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1995:1: (lv_elemType_2_0= ruleJvmTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1995:1: (lv_elemType_2_0= ruleJvmTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:1996:3: lv_elemType_2_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationPointCutAccess().getElemTypeJvmTypeReferenceParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleOperationPointCut4215);
                    lv_elemType_2_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationPointCutRule());
                      	        }
                             		set(
                             			current, 
                             			"elemType",
                              		lv_elemType_2_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2013:7: otherlv_3= '*'
                    {
                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleOperationPointCut4233); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getOperationPointCutAccess().getAsteriskKeyword_2_1());
                          
                    }

                    }
                    break;

            }

            otherlv_4=(Token)match(input,53,FOLLOW_53_in_ruleOperationPointCut4246); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getOperationPointCutAccess().getHyphenMinusGreaterThanSignKeyword_3());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2021:1: ( ( (lv_feature_5_0= RULE_ID ) ) | otherlv_6= '*' )
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==RULE_ID) ) {
                alt30=1;
            }
            else if ( (LA30_0==14) ) {
                alt30=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }
            switch (alt30) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2021:2: ( (lv_feature_5_0= RULE_ID ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2021:2: ( (lv_feature_5_0= RULE_ID ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2022:1: (lv_feature_5_0= RULE_ID )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2022:1: (lv_feature_5_0= RULE_ID )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2023:3: lv_feature_5_0= RULE_ID
                    {
                    lv_feature_5_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOperationPointCut4264); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_feature_5_0, grammarAccess.getOperationPointCutAccess().getFeatureIDTerminalRuleCall_4_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOperationPointCutRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"feature",
                              		lv_feature_5_0, 
                              		"ID");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2040:7: otherlv_6= '*'
                    {
                    otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleOperationPointCut4287); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getOperationPointCutAccess().getAsteriskKeyword_4_1());
                          
                    }

                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2044:2: ( (lv_pre_7_0= ruleXBlockExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2045:1: (lv_pre_7_0= ruleXBlockExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2045:1: (lv_pre_7_0= ruleXBlockExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2046:3: lv_pre_7_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationPointCutAccess().getPreXBlockExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleOperationPointCut4309);
            lv_pre_7_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationPointCutRule());
              	        }
                     		set(
                     			current, 
                     			"pre",
                      		lv_pre_7_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOperationPointCut"


    // $ANTLR start "entryRuleXExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2070:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
    public final EObject entryRuleXExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2071:2: (iv_ruleXExpression= ruleXExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2072:2: iv_ruleXExpression= ruleXExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression4345);
            iv_ruleXExpression=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression4355); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpression"


    // $ANTLR start "ruleXExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2079:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
    public final EObject ruleXExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAssignment_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2082:28: (this_XAssignment_0= ruleXAssignment )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2084:5: this_XAssignment_0= ruleXAssignment
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression4401);
            this_XAssignment_0=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAssignment_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpression"


    // $ANTLR start "entryRuleXAssignment"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2100:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
    public final EObject entryRuleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAssignment = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2101:2: (iv_ruleXAssignment= ruleXAssignment EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2102:2: iv_ruleXAssignment= ruleXAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment4435);
            iv_ruleXAssignment=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment4445); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAssignment"


    // $ANTLR start "ruleXAssignment"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2109:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
    public final EObject ruleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject lv_value_3_0 = null;

        EObject this_XOrExpression_4 = null;

        EObject lv_rightOperand_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2112:28: ( ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:1: ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:1: ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==RULE_ID) ) {
                int LA32_1 = input.LA(2);

                if ( (LA32_1==54) ) {
                    alt32=1;
                }
                else if ( (LA32_1==EOF||(LA32_1>=RULE_ID && LA32_1<=RULE_INT)||(LA32_1>=13 && LA32_1<=14)||(LA32_1>=16 && LA32_1<=19)||(LA32_1>=21 && LA32_1<=22)||LA32_1==29||(LA32_1>=33 && LA32_1<=35)||(LA32_1>=37 && LA32_1<=39)||LA32_1==41||LA32_1==44||LA32_1==53||(LA32_1>=55 && LA32_1<=74)||(LA32_1>=76 && LA32_1<=96)) ) {
                    alt32=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 32, 1, input);

                    throw nvae;
                }
            }
            else if ( ((LA32_0>=RULE_STRING && LA32_0<=RULE_INT)||LA32_0==16||LA32_0==21||LA32_0==33||LA32_0==64||(LA32_0>=66 && LA32_0<=67)||LA32_0==71||LA32_0==76||LA32_0==78||(LA32_0>=81 && LA32_0<=83)||LA32_0==85||(LA32_0>=87 && LA32_0<=94)) ) {
                alt32=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:2: ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:2: ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:3: () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2113:3: ()
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2114:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2119:2: ( ( ruleValidID ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2120:1: ( ruleValidID )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2120:1: ( ruleValidID )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2121:3: ruleValidID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXAssignment4503);
                    ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4519);
                    ruleOpSingleAssign();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2142:1: ( (lv_value_3_0= ruleXAssignment ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2143:1: (lv_value_3_0= ruleXAssignment )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2143:1: (lv_value_3_0= ruleXAssignment )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2144:3: lv_value_3_0= ruleXAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4539);
                    lv_value_3_0=ruleXAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"XAssignment");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2161:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2161:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2162:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment4569);
                    this_XOrExpression_4=ruleXOrExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XOrExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    int alt31=2;
                    int LA31_0 = input.LA(1);

                    if ( (LA31_0==55) ) {
                        int LA31_1 = input.LA(2);

                        if ( (synpred1_InternalEveDesc()) ) {
                            alt31=1;
                        }
                    }
                    switch (alt31) {
                        case 1 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2175:6: ( () ( ( ruleOpMultiAssign ) ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2175:7: () ( ( ruleOpMultiAssign ) )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2175:7: ()
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2176:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndSet(
                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
                                          current);
                                  
                            }

                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2181:2: ( ( ruleOpMultiAssign ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2182:1: ( ruleOpMultiAssign )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2182:1: ( ruleOpMultiAssign )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2183:3: ruleOpMultiAssign
                            {
                            if ( state.backtracking==0 ) {

                              			if (current==null) {
                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
                              	        }
                                      
                            }
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4622);
                            ruleOpMultiAssign();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }


                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2196:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2197:1: (lv_rightOperand_7_0= ruleXAssignment )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2197:1: (lv_rightOperand_7_0= ruleXAssignment )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2198:3: lv_rightOperand_7_0= ruleXAssignment
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4645);
                            lv_rightOperand_7_0=ruleXAssignment();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"rightOperand",
                                      		lv_rightOperand_7_0, 
                                      		"XAssignment");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAssignment"


    // $ANTLR start "entryRuleOpSingleAssign"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2222:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
    public final String entryRuleOpSingleAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2223:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2224:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4685);
            iv_ruleOpSingleAssign=ruleOpSingleAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpSingleAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign4696); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpSingleAssign"


    // $ANTLR start "ruleOpSingleAssign"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2231:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2234:28: (kw= '=' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2236:2: kw= '='
            {
            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpSingleAssign4733); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpSingleAssign"


    // $ANTLR start "entryRuleOpMultiAssign"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2249:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
    public final String entryRuleOpMultiAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2250:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2251:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4773);
            iv_ruleOpMultiAssign=ruleOpMultiAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMultiAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign4784); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMultiAssign"


    // $ANTLR start "ruleOpMultiAssign"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2258:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '+=' ;
    public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2261:28: (kw= '+=' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2263:2: kw= '+='
            {
            kw=(Token)match(input,55,FOLLOW_55_in_ruleOpMultiAssign4821); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMultiAssign"


    // $ANTLR start "entryRuleXOrExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2276:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
    public final EObject entryRuleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOrExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2277:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2278:2: iv_ruleXOrExpression= ruleXOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4860);
            iv_ruleXOrExpression=ruleXOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOrExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression4870); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOrExpression"


    // $ANTLR start "ruleXOrExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2285:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
    public final EObject ruleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAndExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2288:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2289:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2289:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2290:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4917);
            this_XAndExpression_0=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAndExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            loop33:
            do {
                int alt33=2;
                int LA33_0 = input.LA(1);

                if ( (LA33_0==56) ) {
                    int LA33_2 = input.LA(2);

                    if ( (synpred2_InternalEveDesc()) ) {
                        alt33=1;
                    }


                }


                switch (alt33) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2303:6: ( () ( ( ruleOpOr ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2303:7: () ( ( ruleOpOr ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2303:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2304:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2309:2: ( ( ruleOpOr ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2310:1: ( ruleOpOr )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2310:1: ( ruleOpOr )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2311:3: ruleOpOr
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression4970);
            	    ruleOpOr();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2324:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2325:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2325:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2326:3: lv_rightOperand_3_0= ruleXAndExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4993);
            	    lv_rightOperand_3_0=ruleXAndExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAndExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop33;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOrExpression"


    // $ANTLR start "entryRuleOpOr"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2350:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
    public final String entryRuleOpOr() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOr = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2351:2: (iv_ruleOpOr= ruleOpOr EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2352:2: iv_ruleOpOr= ruleOpOr EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOrRule()); 
            }
            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr5032);
            iv_ruleOpOr=ruleOpOr();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOr.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr5043); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOr"


    // $ANTLR start "ruleOpOr"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2359:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2362:28: (kw= '||' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2364:2: kw= '||'
            {
            kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOr5080); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOr"


    // $ANTLR start "entryRuleXAndExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2377:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
    public final EObject entryRuleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAndExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2378:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2379:2: iv_ruleXAndExpression= ruleXAndExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression5119);
            iv_ruleXAndExpression=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAndExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression5129); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAndExpression"


    // $ANTLR start "ruleXAndExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2386:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
    public final EObject ruleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XEqualityExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2389:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2390:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2390:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2391:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5176);
            this_XEqualityExpression_0=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XEqualityExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            loop34:
            do {
                int alt34=2;
                int LA34_0 = input.LA(1);

                if ( (LA34_0==57) ) {
                    int LA34_2 = input.LA(2);

                    if ( (synpred3_InternalEveDesc()) ) {
                        alt34=1;
                    }


                }


                switch (alt34) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2404:6: ( () ( ( ruleOpAnd ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2404:7: () ( ( ruleOpAnd ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2404:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2405:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2410:2: ( ( ruleOpAnd ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2411:1: ( ruleOpAnd )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2411:1: ( ruleOpAnd )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2412:3: ruleOpAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression5229);
            	    ruleOpAnd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2425:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2426:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2426:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2427:3: lv_rightOperand_3_0= ruleXEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5252);
            	    lv_rightOperand_3_0=ruleXEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XEqualityExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop34;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAndExpression"


    // $ANTLR start "entryRuleOpAnd"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2451:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
    public final String entryRuleOpAnd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAnd = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2452:2: (iv_ruleOpAnd= ruleOpAnd EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2453:2: iv_ruleOpAnd= ruleOpAnd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAndRule()); 
            }
            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd5291);
            iv_ruleOpAnd=ruleOpAnd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAnd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd5302); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAnd"


    // $ANTLR start "ruleOpAnd"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2460:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2463:28: (kw= '&&' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2465:2: kw= '&&'
            {
            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpAnd5339); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAnd"


    // $ANTLR start "entryRuleXEqualityExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2478:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXEqualityExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2479:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2480:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5378);
            iv_ruleXEqualityExpression=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXEqualityExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression5388); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXEqualityExpression"


    // $ANTLR start "ruleXEqualityExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2487:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
    public final EObject ruleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XRelationalExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2490:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2491:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2491:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2492:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5435);
            this_XRelationalExpression_0=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XRelationalExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( (LA35_0==58) ) {
                    int LA35_2 = input.LA(2);

                    if ( (synpred4_InternalEveDesc()) ) {
                        alt35=1;
                    }


                }
                else if ( (LA35_0==59) ) {
                    int LA35_3 = input.LA(2);

                    if ( (synpred4_InternalEveDesc()) ) {
                        alt35=1;
                    }


                }


                switch (alt35) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2505:6: ( () ( ( ruleOpEquality ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2505:7: () ( ( ruleOpEquality ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2505:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2506:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2511:2: ( ( ruleOpEquality ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2512:1: ( ruleOpEquality )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2512:1: ( ruleOpEquality )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2513:3: ruleOpEquality
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression5488);
            	    ruleOpEquality();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2526:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2527:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2527:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2528:3: lv_rightOperand_3_0= ruleXRelationalExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5511);
            	    lv_rightOperand_3_0=ruleXRelationalExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XRelationalExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXEqualityExpression"


    // $ANTLR start "entryRuleOpEquality"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2552:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
    public final String entryRuleOpEquality() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpEquality = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2553:2: (iv_ruleOpEquality= ruleOpEquality EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2554:2: iv_ruleOpEquality= ruleOpEquality EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpEqualityRule()); 
            }
            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality5550);
            iv_ruleOpEquality=ruleOpEquality();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpEquality.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality5561); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpEquality"


    // $ANTLR start "ruleOpEquality"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2561:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' ) ;
    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2564:28: ( (kw= '==' | kw= '!=' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2565:1: (kw= '==' | kw= '!=' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2565:1: (kw= '==' | kw= '!=' )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==58) ) {
                alt36=1;
            }
            else if ( (LA36_0==59) ) {
                alt36=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2566:2: kw= '=='
                    {
                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpEquality5599); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2573:2: kw= '!='
                    {
                    kw=(Token)match(input,59,FOLLOW_59_in_ruleOpEquality5618); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpEquality"


    // $ANTLR start "entryRuleXRelationalExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2586:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXRelationalExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2587:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2588:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression5658);
            iv_ruleXRelationalExpression=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXRelationalExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression5668); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXRelationalExpression"


    // $ANTLR start "ruleXRelationalExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2595:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
    public final EObject ruleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XOtherOperatorExpression_0 = null;

        EObject lv_rightOperand_6_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2598:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2599:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2599:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2600:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5715);
            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XOtherOperatorExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            loop37:
            do {
                int alt37=3;
                switch ( input.LA(1) ) {
                case 64:
                    {
                    int LA37_2 = input.LA(2);

                    if ( (synpred6_InternalEveDesc()) ) {
                        alt37=2;
                    }


                    }
                    break;
                case 60:
                    {
                    int LA37_3 = input.LA(2);

                    if ( (synpred5_InternalEveDesc()) ) {
                        alt37=1;
                    }


                    }
                    break;
                case 61:
                    {
                    int LA37_4 = input.LA(2);

                    if ( (synpred6_InternalEveDesc()) ) {
                        alt37=2;
                    }


                    }
                    break;
                case 62:
                    {
                    int LA37_5 = input.LA(2);

                    if ( (synpred6_InternalEveDesc()) ) {
                        alt37=2;
                    }


                    }
                    break;
                case 63:
                    {
                    int LA37_6 = input.LA(2);

                    if ( (synpred6_InternalEveDesc()) ) {
                        alt37=2;
                    }


                    }
                    break;

                }

                switch (alt37) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2610:5: ( () otherlv_2= 'instanceof' )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2610:6: () otherlv_2= 'instanceof'
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2610:6: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2611:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,60,FOLLOW_60_in_ruleXRelationalExpression5751); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2620:3: ( ( ruleQualifiedName ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2621:1: ( ruleQualifiedName )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2621:1: ( ruleQualifiedName )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2622:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeCrossReference_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXRelationalExpression5776);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2641:6: ( () ( ( ruleOpCompare ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2641:7: () ( ( ruleOpCompare ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2641:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2642:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2647:2: ( ( ruleOpCompare ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2648:1: ( ruleOpCompare )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2648:1: ( ruleOpCompare )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2649:3: ruleOpCompare
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression5837);
            	    ruleOpCompare();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2662:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2663:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2663:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2664:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5860);
            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_6_0, 
            	              		"XOtherOperatorExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop37;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXRelationalExpression"


    // $ANTLR start "entryRuleOpCompare"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2688:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
    public final String entryRuleOpCompare() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpCompare = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2689:2: (iv_ruleOpCompare= ruleOpCompare EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2690:2: iv_ruleOpCompare= ruleOpCompare EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpCompareRule()); 
            }
            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare5900);
            iv_ruleOpCompare=ruleOpCompare();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpCompare.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare5911); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpCompare"


    // $ANTLR start "ruleOpCompare"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2697:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) ;
    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2700:28: ( (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2701:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2701:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            int alt38=4;
            switch ( input.LA(1) ) {
            case 61:
                {
                alt38=1;
                }
                break;
            case 62:
                {
                alt38=2;
                }
                break;
            case 63:
                {
                alt38=3;
                }
                break;
            case 64:
                {
                alt38=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }

            switch (alt38) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2702:2: kw= '>='
                    {
                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpCompare5949); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2709:2: kw= '<='
                    {
                    kw=(Token)match(input,62,FOLLOW_62_in_ruleOpCompare5968); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2716:2: kw= '>'
                    {
                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpCompare5987); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2723:2: kw= '<'
                    {
                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpCompare6006); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpCompare"


    // $ANTLR start "entryRuleXOtherOperatorExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2736:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOtherOperatorExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2737:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2738:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression6046);
            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOtherOperatorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression6056); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOtherOperatorExpression"


    // $ANTLR start "ruleXOtherOperatorExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2745:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAdditiveExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2748:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2749:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2749:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2750:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6103);
            this_XAdditiveExpression_0=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAdditiveExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            loop39:
            do {
                int alt39=2;
                int LA39_0 = input.LA(1);

                if ( (LA39_0==53) ) {
                    int LA39_2 = input.LA(2);

                    if ( (synpred7_InternalEveDesc()) ) {
                        alt39=1;
                    }


                }
                else if ( (LA39_0==65) ) {
                    int LA39_3 = input.LA(2);

                    if ( (synpred7_InternalEveDesc()) ) {
                        alt39=1;
                    }


                }


                switch (alt39) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2763:6: ( () ( ( ruleOpOther ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2763:7: () ( ( ruleOpOther ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2763:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2764:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2769:2: ( ( ruleOpOther ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2770:1: ( ruleOpOther )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2770:1: ( ruleOpOther )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2771:3: ruleOpOther
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression6156);
            	    ruleOpOther();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2784:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2785:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2785:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2786:3: lv_rightOperand_3_0= ruleXAdditiveExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6179);
            	    lv_rightOperand_3_0=ruleXAdditiveExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAdditiveExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop39;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOtherOperatorExpression"


    // $ANTLR start "entryRuleOpOther"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2810:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
    public final String entryRuleOpOther() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOther = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2811:2: (iv_ruleOpOther= ruleOpOther EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2812:2: iv_ruleOpOther= ruleOpOther EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOtherRule()); 
            }
            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther6218);
            iv_ruleOpOther=ruleOpOther();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOther.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther6229); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOther"


    // $ANTLR start "ruleOpOther"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2819:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..' ) ;
    public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2822:28: ( (kw= '->' | kw= '..' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2823:1: (kw= '->' | kw= '..' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2823:1: (kw= '->' | kw= '..' )
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==53) ) {
                alt40=1;
            }
            else if ( (LA40_0==65) ) {
                alt40=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }
            switch (alt40) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2824:2: kw= '->'
                    {
                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6267); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2831:2: kw= '..'
                    {
                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpOther6286); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOther"


    // $ANTLR start "entryRuleXAdditiveExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2844:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAdditiveExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2845:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2846:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression6326);
            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAdditiveExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression6336); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAdditiveExpression"


    // $ANTLR start "ruleXAdditiveExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2853:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
    public final EObject ruleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XMultiplicativeExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2856:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2857:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2857:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2858:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6383);
            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMultiplicativeExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            loop41:
            do {
                int alt41=2;
                int LA41_0 = input.LA(1);

                if ( (LA41_0==67) ) {
                    int LA41_2 = input.LA(2);

                    if ( (synpred8_InternalEveDesc()) ) {
                        alt41=1;
                    }


                }
                else if ( (LA41_0==66) ) {
                    int LA41_3 = input.LA(2);

                    if ( (synpred8_InternalEveDesc()) ) {
                        alt41=1;
                    }


                }


                switch (alt41) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2871:6: ( () ( ( ruleOpAdd ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2871:7: () ( ( ruleOpAdd ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2871:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2872:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2877:2: ( ( ruleOpAdd ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2878:1: ( ruleOpAdd )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2878:1: ( ruleOpAdd )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2879:3: ruleOpAdd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression6436);
            	    ruleOpAdd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2892:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2893:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2893:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2894:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6459);
            	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XMultiplicativeExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop41;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAdditiveExpression"


    // $ANTLR start "entryRuleOpAdd"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2918:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
    public final String entryRuleOpAdd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAdd = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2919:2: (iv_ruleOpAdd= ruleOpAdd EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2920:2: iv_ruleOpAdd= ruleOpAdd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAddRule()); 
            }
            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd6498);
            iv_ruleOpAdd=ruleOpAdd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAdd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd6509); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAdd"


    // $ANTLR start "ruleOpAdd"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2927:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2930:28: ( (kw= '+' | kw= '-' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2931:1: (kw= '+' | kw= '-' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2931:1: (kw= '+' | kw= '-' )
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==66) ) {
                alt42=1;
            }
            else if ( (LA42_0==67) ) {
                alt42=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 42, 0, input);

                throw nvae;
            }
            switch (alt42) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2932:2: kw= '+'
                    {
                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpAdd6547); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2939:2: kw= '-'
                    {
                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpAdd6566); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAdd"


    // $ANTLR start "entryRuleXMultiplicativeExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2952:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMultiplicativeExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2953:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2954:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression6606);
            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMultiplicativeExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression6616); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMultiplicativeExpression"


    // $ANTLR start "ruleXMultiplicativeExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2961:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
    public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XUnaryOperation_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2964:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2965:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2965:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2966:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6663);
            this_XUnaryOperation_0=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XUnaryOperation_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            loop43:
            do {
                int alt43=2;
                switch ( input.LA(1) ) {
                case 14:
                    {
                    int LA43_2 = input.LA(2);

                    if ( (synpred9_InternalEveDesc()) ) {
                        alt43=1;
                    }


                    }
                    break;
                case 68:
                    {
                    int LA43_3 = input.LA(2);

                    if ( (synpred9_InternalEveDesc()) ) {
                        alt43=1;
                    }


                    }
                    break;
                case 69:
                    {
                    int LA43_4 = input.LA(2);

                    if ( (synpred9_InternalEveDesc()) ) {
                        alt43=1;
                    }


                    }
                    break;
                case 70:
                    {
                    int LA43_5 = input.LA(2);

                    if ( (synpred9_InternalEveDesc()) ) {
                        alt43=1;
                    }


                    }
                    break;

                }

                switch (alt43) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2979:6: ( () ( ( ruleOpMulti ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2979:7: () ( ( ruleOpMulti ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2979:7: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2980:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2985:2: ( ( ruleOpMulti ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2986:1: ( ruleOpMulti )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2986:1: ( ruleOpMulti )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2987:3: ruleOpMulti
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression6716);
            	    ruleOpMulti();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3000:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3001:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3001:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3002:3: lv_rightOperand_3_0= ruleXUnaryOperation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6739);
            	    lv_rightOperand_3_0=ruleXUnaryOperation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XUnaryOperation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop43;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMultiplicativeExpression"


    // $ANTLR start "entryRuleOpMulti"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3026:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
    public final String entryRuleOpMulti() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMulti = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3027:2: (iv_ruleOpMulti= ruleOpMulti EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3028:2: iv_ruleOpMulti= ruleOpMulti EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiRule()); 
            }
            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti6778);
            iv_ruleOpMulti=ruleOpMulti();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMulti.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti6789); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMulti"


    // $ANTLR start "ruleOpMulti"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3035:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3038:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3039:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3039:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            int alt44=4;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt44=1;
                }
                break;
            case 68:
                {
                alt44=2;
                }
                break;
            case 69:
                {
                alt44=3;
                }
                break;
            case 70:
                {
                alt44=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }

            switch (alt44) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3040:2: kw= '*'
                    {
                    kw=(Token)match(input,14,FOLLOW_14_in_ruleOpMulti6827); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3047:2: kw= '**'
                    {
                    kw=(Token)match(input,68,FOLLOW_68_in_ruleOpMulti6846); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3054:2: kw= '/'
                    {
                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpMulti6865); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3061:2: kw= '%'
                    {
                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpMulti6884); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMulti"


    // $ANTLR start "entryRuleXUnaryOperation"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3074:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXUnaryOperation = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3075:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3076:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation6924);
            iv_ruleXUnaryOperation=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXUnaryOperation; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation6934); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXUnaryOperation"


    // $ANTLR start "ruleXUnaryOperation"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3083:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
    public final EObject ruleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject lv_operand_2_0 = null;

        EObject this_XCastedExpression_3 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3086:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( ((LA45_0>=66 && LA45_0<=67)||LA45_0==71) ) {
                alt45=1;
            }
            else if ( ((LA45_0>=RULE_ID && LA45_0<=RULE_INT)||LA45_0==16||LA45_0==21||LA45_0==33||LA45_0==64||LA45_0==76||LA45_0==78||(LA45_0>=81 && LA45_0<=83)||LA45_0==85||(LA45_0>=87 && LA45_0<=94)) ) {
                alt45=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }
            switch (alt45) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3087:3: ()
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3088:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3093:2: ( ( ruleOpUnary ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3094:1: ( ruleOpUnary )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3094:1: ( ruleOpUnary )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3095:3: ruleOpUnary
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation6992);
                    ruleOpUnary();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3108:2: ( (lv_operand_2_0= ruleXCastedExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3109:1: (lv_operand_2_0= ruleXCastedExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3109:1: (lv_operand_2_0= ruleXCastedExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3110:3: lv_operand_2_0= ruleXCastedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXCastedExpressionParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7013);
                    lv_operand_2_0=ruleXCastedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
                      	        }
                             		set(
                             			current, 
                             			"operand",
                              		lv_operand_2_0, 
                              		"XCastedExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3128:5: this_XCastedExpression_3= ruleXCastedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7042);
                    this_XCastedExpression_3=ruleXCastedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XCastedExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXUnaryOperation"


    // $ANTLR start "entryRuleOpUnary"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3144:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
    public final String entryRuleOpUnary() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpUnary = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3145:2: (iv_ruleOpUnary= ruleOpUnary EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3146:2: iv_ruleOpUnary= ruleOpUnary EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpUnaryRule()); 
            }
            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary7078);
            iv_ruleOpUnary=ruleOpUnary();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpUnary.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary7089); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpUnary"


    // $ANTLR start "ruleOpUnary"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3153:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3156:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3157:1: (kw= '!' | kw= '-' | kw= '+' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3157:1: (kw= '!' | kw= '-' | kw= '+' )
            int alt46=3;
            switch ( input.LA(1) ) {
            case 71:
                {
                alt46=1;
                }
                break;
            case 67:
                {
                alt46=2;
                }
                break;
            case 66:
                {
                alt46=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }

            switch (alt46) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3158:2: kw= '!'
                    {
                    kw=(Token)match(input,71,FOLLOW_71_in_ruleOpUnary7127); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3165:2: kw= '-'
                    {
                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpUnary7146); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3172:2: kw= '+'
                    {
                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpUnary7165); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpUnary"


    // $ANTLR start "entryRuleXCastedExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3185:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
    public final EObject entryRuleXCastedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCastedExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3186:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3187:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7205);
            iv_ruleXCastedExpression=ruleXCastedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCastedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression7215); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCastedExpression"


    // $ANTLR start "ruleXCastedExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3194:1: ruleXCastedExpression returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
    public final EObject ruleXCastedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XMemberFeatureCall_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3197:28: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3198:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3198:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3199:5: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXMemberFeatureCallParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression7262);
            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMemberFeatureCall_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            loop47:
            do {
                int alt47=2;
                int LA47_0 = input.LA(1);

                if ( (LA47_0==72) ) {
                    int LA47_2 = input.LA(2);

                    if ( (synpred10_InternalEveDesc()) ) {
                        alt47=1;
                    }


                }


                switch (alt47) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3209:5: ( () otherlv_2= 'as' )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3209:6: () otherlv_2= 'as'
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3209:6: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3210:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,72,FOLLOW_72_in_ruleXCastedExpression7297); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3219:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3220:1: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3220:1: (lv_type_3_0= ruleJvmTypeReference )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3221:3: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression7320);
            	    lv_type_3_0=ruleJvmTypeReference();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"type",
            	              		lv_type_3_0, 
            	              		"JvmTypeReference");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop47;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCastedExpression"


    // $ANTLR start "entryRuleXMemberFeatureCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3245:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMemberFeatureCall = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3246:2: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3247:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall7358);
            iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMemberFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall7368); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMemberFeatureCall"


    // $ANTLR start "ruleXMemberFeatureCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3254:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* ) ;
    public final EObject ruleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_7=null;
        Token lv_nullSafe_8_0=null;
        Token lv_spreading_9_0=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token lv_explicitOperationCall_16_0=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        EObject this_XPrimaryExpression_0 = null;

        EObject lv_value_5_0 = null;

        EObject lv_typeArguments_11_0 = null;

        EObject lv_typeArguments_13_0 = null;

        EObject lv_memberCallArguments_17_0 = null;

        EObject lv_memberCallArguments_18_0 = null;

        EObject lv_memberCallArguments_20_0 = null;

        EObject lv_memberCallArguments_22_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3257:28: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3258:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3258:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3259:5: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall7415);
            this_XPrimaryExpression_0=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XPrimaryExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:1: ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )*
            loop55:
            do {
                int alt55=3;
                switch ( input.LA(1) ) {
                case 13:
                    {
                    int LA55_2 = input.LA(2);

                    if ( (synpred11_InternalEveDesc()) ) {
                        alt55=1;
                    }
                    else if ( (synpred12_InternalEveDesc()) ) {
                        alt55=2;
                    }


                    }
                    break;
                case 73:
                    {
                    int LA55_3 = input.LA(2);

                    if ( (synpred12_InternalEveDesc()) ) {
                        alt55=2;
                    }


                    }
                    break;
                case 74:
                    {
                    int LA55_4 = input.LA(2);

                    if ( (synpred12_InternalEveDesc()) ) {
                        alt55=2;
                    }


                    }
                    break;

                }

                switch (alt55) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:2: ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:2: ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:3: ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:3: ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:4: ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3273:25: ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3273:26: () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3273:26: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3274:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,13,FOLLOW_13_in_ruleXMemberFeatureCall7464); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1());
            	          
            	    }
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3283:1: ( ( ruleValidID ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3284:1: ( ruleValidID )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3284:1: ( ruleValidID )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3285:3: ruleValidID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleXMemberFeatureCall7487);
            	    ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall7503);
            	    ruleOpSingleAssign();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3306:3: ( (lv_value_5_0= ruleXAssignment ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3307:1: (lv_value_5_0= ruleXAssignment )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3307:1: (lv_value_5_0= ruleXAssignment )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3308:3: lv_value_5_0= ruleXAssignment
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall7525);
            	    lv_value_5_0=ruleXAssignment();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"value",
            	              		lv_value_5_0, 
            	              		"XAssignment");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3341:7: ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3341:8: () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3341:8: ()
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3342:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3347:2: (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    int alt48=3;
            	    switch ( input.LA(1) ) {
            	    case 13:
            	        {
            	        alt48=1;
            	        }
            	        break;
            	    case 73:
            	        {
            	        alt48=2;
            	        }
            	        break;
            	    case 74:
            	        {
            	        alt48=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 48, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt48) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3347:4: otherlv_7= '.'
            	            {
            	            otherlv_7=(Token)match(input,13,FOLLOW_13_in_ruleXMemberFeatureCall7611); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_7, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3352:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3352:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3353:1: (lv_nullSafe_8_0= '?.' )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3353:1: (lv_nullSafe_8_0= '?.' )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3354:3: lv_nullSafe_8_0= '?.'
            	            {
            	            lv_nullSafe_8_0=(Token)match(input,73,FOLLOW_73_in_ruleXMemberFeatureCall7635); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_nullSafe_8_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "nullSafe", true, "?.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3368:6: ( (lv_spreading_9_0= '*.' ) )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3368:6: ( (lv_spreading_9_0= '*.' ) )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3369:1: (lv_spreading_9_0= '*.' )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3369:1: (lv_spreading_9_0= '*.' )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3370:3: lv_spreading_9_0= '*.'
            	            {
            	            lv_spreading_9_0=(Token)match(input,74,FOLLOW_74_in_ruleXMemberFeatureCall7672); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_spreading_9_0, grammarAccess.getXMemberFeatureCallAccess().getSpreadingAsteriskFullStopKeyword_1_1_0_0_1_2_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "spreading", true, "*.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3383:5: (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )?
            	    int alt50=2;
            	    int LA50_0 = input.LA(1);

            	    if ( (LA50_0==64) ) {
            	        alt50=1;
            	    }
            	    switch (alt50) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3383:7: otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>'
            	            {
            	            otherlv_10=(Token)match(input,64,FOLLOW_64_in_ruleXMemberFeatureCall7701); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_10, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
            	                  
            	            }
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3387:1: ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3388:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3388:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3389:3: lv_typeArguments_11_0= ruleJvmArgumentTypeReference
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall7722);
            	            lv_typeArguments_11_0=ruleJvmArgumentTypeReference();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"typeArguments",
            	                      		lv_typeArguments_11_0, 
            	                      		"JvmArgumentTypeReference");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3405:2: (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )*
            	            loop49:
            	            do {
            	                int alt49=2;
            	                int LA49_0 = input.LA(1);

            	                if ( (LA49_0==17) ) {
            	                    alt49=1;
            	                }


            	                switch (alt49) {
            	            	case 1 :
            	            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3405:4: otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    {
            	            	    otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleXMemberFeatureCall7735); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_12, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
            	            	          
            	            	    }
            	            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3409:1: ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3410:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    {
            	            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3410:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3411:3: lv_typeArguments_13_0= ruleJvmArgumentTypeReference
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall7756);
            	            	    lv_typeArguments_13_0=ruleJvmArgumentTypeReference();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"typeArguments",
            	            	              		lv_typeArguments_13_0, 
            	            	              		"JvmArgumentTypeReference");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop49;
            	                }
            	            } while (true);

            	            otherlv_14=(Token)match(input,63,FOLLOW_63_in_ruleXMemberFeatureCall7770); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_14, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3431:3: ( ( ruleValidID ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3432:1: ( ruleValidID )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3432:1: ( ruleValidID )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3433:3: ruleValidID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleXMemberFeatureCall7795);
            	    ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3446:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?
            	    int alt53=2;
            	    alt53 = dfa53.predict(input);
            	    switch (alt53) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3446:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')'
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3446:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3446:4: ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3453:1: (lv_explicitOperationCall_16_0= '(' )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3454:3: lv_explicitOperationCall_16_0= '('
            	            {
            	            lv_explicitOperationCall_16_0=(Token)match(input,16,FOLLOW_16_in_ruleXMemberFeatureCall7829); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_explicitOperationCall_16_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "explicitOperationCall", true, "(");
            	              	    
            	            }

            	            }


            	            }

            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?
            	            int alt52=3;
            	            alt52 = dfa52.predict(input);
            	            switch (alt52) {
            	                case 1 :
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    {
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    {
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3484:1: (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3485:3: lv_memberCallArguments_17_0= ruleXShortClosure
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall7914);
            	                    lv_memberCallArguments_17_0=ruleXShortClosure();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_17_0, 
            	                              		"XShortClosure");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }


            	                    }
            	                    break;
            	                case 2 :
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3502:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    {
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3502:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3502:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    {
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3502:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) )
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3503:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    {
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3503:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3504:3: lv_memberCallArguments_18_0= ruleXExpression
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall7942);
            	                    lv_memberCallArguments_18_0=ruleXExpression();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_18_0, 
            	                              		"XExpression");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }

            	                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3520:2: (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    loop51:
            	                    do {
            	                        int alt51=2;
            	                        int LA51_0 = input.LA(1);

            	                        if ( (LA51_0==17) ) {
            	                            alt51=1;
            	                        }


            	                        switch (alt51) {
            	                    	case 1 :
            	                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3520:4: otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    {
            	                    	    otherlv_19=(Token)match(input,17,FOLLOW_17_in_ruleXMemberFeatureCall7955); if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	          	newLeafNode(otherlv_19, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
            	                    	          
            	                    	    }
            	                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3524:1: ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3525:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    {
            	                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3525:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3526:3: lv_memberCallArguments_20_0= ruleXExpression
            	                    	    {
            	                    	    if ( state.backtracking==0 ) {
            	                    	       
            	                    	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
            	                    	      	    
            	                    	    }
            	                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall7976);
            	                    	    lv_memberCallArguments_20_0=ruleXExpression();

            	                    	    state._fsp--;
            	                    	    if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	      	        if (current==null) {
            	                    	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                    	      	        }
            	                    	             		add(
            	                    	             			current, 
            	                    	             			"memberCallArguments",
            	                    	              		lv_memberCallArguments_20_0, 
            	                    	              		"XExpression");
            	                    	      	        afterParserOrEnumRuleCall();
            	                    	      	    
            	                    	    }

            	                    	    }


            	                    	    }


            	                    	    }
            	                    	    break;

            	                    	default :
            	                    	    break loop51;
            	                        }
            	                    } while (true);


            	                    }


            	                    }
            	                    break;

            	            }

            	            otherlv_21=(Token)match(input,18,FOLLOW_18_in_ruleXMemberFeatureCall7993); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_21, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3546:3: ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?
            	    int alt54=2;
            	    alt54 = dfa54.predict(input);
            	    switch (alt54) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3546:4: ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure )
            	            {
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3551:1: (lv_memberCallArguments_22_0= ruleXClosure )
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3552:3: lv_memberCallArguments_22_0= ruleXClosure
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleXClosure_in_ruleXMemberFeatureCall8026);
            	            lv_memberCallArguments_22_0=ruleXClosure();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"memberCallArguments",
            	                      		lv_memberCallArguments_22_0, 
            	                      		"XClosure");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop55;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMemberFeatureCall"


    // $ANTLR start "entryRuleXPrimaryExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3576:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXPrimaryExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3577:2: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3578:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression8066);
            iv_ruleXPrimaryExpression=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXPrimaryExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression8076); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXPrimaryExpression"


    // $ANTLR start "ruleXPrimaryExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3585:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) ;
    public final EObject ruleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XConstructorCall_0 = null;

        EObject this_XBlockExpression_1 = null;

        EObject this_XSwitchExpression_2 = null;

        EObject this_XFeatureCall_3 = null;

        EObject this_XLiteral_4 = null;

        EObject this_XIfExpression_5 = null;

        EObject this_XForLoopExpression_6 = null;

        EObject this_XWhileExpression_7 = null;

        EObject this_XDoWhileExpression_8 = null;

        EObject this_XThrowExpression_9 = null;

        EObject this_XReturnExpression_10 = null;

        EObject this_XTryCatchFinallyExpression_11 = null;

        EObject this_XParenthesizedExpression_12 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3588:28: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3589:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3589:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            int alt56=13;
            switch ( input.LA(1) ) {
            case 87:
                {
                alt56=1;
                }
                break;
            case 21:
                {
                alt56=2;
                }
                break;
            case 78:
                {
                alt56=3;
                }
                break;
            case RULE_ID:
            case 64:
            case 85:
                {
                alt56=4;
                }
                break;
            case RULE_STRING:
            case RULE_INT:
            case 33:
            case 88:
            case 89:
            case 90:
            case 91:
                {
                alt56=5;
                }
                break;
            case 76:
                {
                alt56=6;
                }
                break;
            case 81:
                {
                alt56=7;
                }
                break;
            case 82:
                {
                alt56=8;
                }
                break;
            case 83:
                {
                alt56=9;
                }
                break;
            case 92:
                {
                alt56=10;
                }
                break;
            case 93:
                {
                alt56=11;
                }
                break;
            case 94:
                {
                alt56=12;
                }
                break;
            case 16:
                {
                alt56=13;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 56, 0, input);

                throw nvae;
            }

            switch (alt56) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3590:5: this_XConstructorCall_0= ruleXConstructorCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression8123);
                    this_XConstructorCall_0=ruleXConstructorCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XConstructorCall_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3600:5: this_XBlockExpression_1= ruleXBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression8150);
                    this_XBlockExpression_1=ruleXBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBlockExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3610:5: this_XSwitchExpression_2= ruleXSwitchExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression8177);
                    this_XSwitchExpression_2=ruleXSwitchExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XSwitchExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3620:5: this_XFeatureCall_3= ruleXFeatureCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression8204);
                    this_XFeatureCall_3=ruleXFeatureCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFeatureCall_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3630:5: this_XLiteral_4= ruleXLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression8231);
                    this_XLiteral_4=ruleXLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3640:5: this_XIfExpression_5= ruleXIfExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression8258);
                    this_XIfExpression_5=ruleXIfExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIfExpression_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3650:5: this_XForLoopExpression_6= ruleXForLoopExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression8285);
                    this_XForLoopExpression_6=ruleXForLoopExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XForLoopExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3660:5: this_XWhileExpression_7= ruleXWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression8312);
                    this_XWhileExpression_7=ruleXWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XWhileExpression_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3670:5: this_XDoWhileExpression_8= ruleXDoWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression8339);
                    this_XDoWhileExpression_8=ruleXDoWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XDoWhileExpression_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3680:5: this_XThrowExpression_9= ruleXThrowExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression8366);
                    this_XThrowExpression_9=ruleXThrowExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XThrowExpression_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3690:5: this_XReturnExpression_10= ruleXReturnExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression8393);
                    this_XReturnExpression_10=ruleXReturnExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XReturnExpression_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3700:5: this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression8420);
                    this_XTryCatchFinallyExpression_11=ruleXTryCatchFinallyExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTryCatchFinallyExpression_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3710:5: this_XParenthesizedExpression_12= ruleXParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression8447);
                    this_XParenthesizedExpression_12=ruleXParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XParenthesizedExpression_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXPrimaryExpression"


    // $ANTLR start "entryRuleXLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3726:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
    public final EObject entryRuleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3727:2: (iv_ruleXLiteral= ruleXLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3728:2: iv_ruleXLiteral= ruleXLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral8482);
            iv_ruleXLiteral=ruleXLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral8492); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXLiteral"


    // $ANTLR start "ruleXLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3735:1: ruleXLiteral returns [EObject current=null] : (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral ) ;
    public final EObject ruleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_XClosure_0 = null;

        EObject this_XBooleanLiteral_1 = null;

        EObject this_XIntLiteral_2 = null;

        EObject this_XNullLiteral_3 = null;

        EObject this_XStringLiteral_4 = null;

        EObject this_XTypeLiteral_5 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3738:28: ( (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3739:1: (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3739:1: (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral )
            int alt57=6;
            switch ( input.LA(1) ) {
            case 33:
                {
                alt57=1;
                }
                break;
            case 88:
            case 89:
                {
                alt57=2;
                }
                break;
            case RULE_INT:
                {
                alt57=3;
                }
                break;
            case 90:
                {
                alt57=4;
                }
                break;
            case RULE_STRING:
                {
                alt57=5;
                }
                break;
            case 91:
                {
                alt57=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;
            }

            switch (alt57) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3740:5: this_XClosure_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXLiteral8539);
                    this_XClosure_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XClosure_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3750:5: this_XBooleanLiteral_1= ruleXBooleanLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral8566);
                    this_XBooleanLiteral_1=ruleXBooleanLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBooleanLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3760:5: this_XIntLiteral_2= ruleXIntLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXIntLiteralParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIntLiteral_in_ruleXLiteral8593);
                    this_XIntLiteral_2=ruleXIntLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIntLiteral_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3770:5: this_XNullLiteral_3= ruleXNullLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXNullLiteral_in_ruleXLiteral8620);
                    this_XNullLiteral_3=ruleXNullLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XNullLiteral_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3780:5: this_XStringLiteral_4= ruleXStringLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXStringLiteral_in_ruleXLiteral8647);
                    this_XStringLiteral_4=ruleXStringLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XStringLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3790:5: this_XTypeLiteral_5= ruleXTypeLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTypeLiteral_in_ruleXLiteral8674);
                    this_XTypeLiteral_5=ruleXTypeLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTypeLiteral_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXLiteral"


    // $ANTLR start "entryRuleXClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3806:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
    public final EObject entryRuleXClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXClosure = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3807:2: (iv_ruleXClosure= ruleXClosure EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3808:2: iv_ruleXClosure= ruleXClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure8709);
            iv_ruleXClosure=ruleXClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure8719); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXClosure"


    // $ANTLR start "ruleXClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3815:1: ruleXClosure returns [EObject current=null] : ( () otherlv_1= '[' ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
    public final EObject ruleXClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token lv_explicitSyntax_5_0=null;
        Token otherlv_7=null;
        EObject lv_declaredFormalParameters_2_0 = null;

        EObject lv_declaredFormalParameters_4_0 = null;

        EObject lv_expression_6_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3818:28: ( ( () otherlv_1= '[' ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3819:1: ( () otherlv_1= '[' ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3819:1: ( () otherlv_1= '[' ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3819:2: () otherlv_1= '[' ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3819:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3820:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXClosureAccess().getXClosureAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleXClosure8765); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:1: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
            int alt60=2;
            alt60 = dfa60.predict(input);
            switch (alt60) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:2: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3844:6: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3844:7: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3844:7: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
                    int alt59=2;
                    int LA59_0 = input.LA(1);

                    if ( (LA59_0==RULE_ID||LA59_0==16||LA59_0==44) ) {
                        alt59=1;
                    }
                    switch (alt59) {
                        case 1 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3844:8: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3844:8: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3845:1: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3845:1: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3846:3: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_2_0_0_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure8836);
                            lv_declaredFormalParameters_2_0=ruleJvmFormalParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"declaredFormalParameters",
                                      		lv_declaredFormalParameters_2_0, 
                                      		"JvmFormalParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3862:2: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                            loop58:
                            do {
                                int alt58=2;
                                int LA58_0 = input.LA(1);

                                if ( (LA58_0==17) ) {
                                    alt58=1;
                                }


                                switch (alt58) {
                            	case 1 :
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3862:4: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                            	    {
                            	    otherlv_3=(Token)match(input,17,FOLLOW_17_in_ruleXClosure8849); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_2_0_0_1_0());
                            	          
                            	    }
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3866:1: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3867:1: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                            	    {
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3867:1: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3868:3: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_2_0_0_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure8870);
                            	    lv_declaredFormalParameters_4_0=ruleJvmFormalParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"declaredFormalParameters",
                            	              		lv_declaredFormalParameters_4_0, 
                            	              		"JvmFormalParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop58;
                                }
                            } while (true);


                            }
                            break;

                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3884:6: ( (lv_explicitSyntax_5_0= '|' ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3885:1: (lv_explicitSyntax_5_0= '|' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3885:1: (lv_explicitSyntax_5_0= '|' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3886:3: lv_explicitSyntax_5_0= '|'
                    {
                    lv_explicitSyntax_5_0=(Token)match(input,75,FOLLOW_75_in_ruleXClosure8892); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_2_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXClosureRule());
                      	        }
                             		setWithLastConsumed(current, "explicitSyntax", true, "|");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3899:5: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3900:1: (lv_expression_6_0= ruleXExpressionInClosure )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3900:1: (lv_expression_6_0= ruleXExpressionInClosure )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3901:3: lv_expression_6_0= ruleXExpressionInClosure
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpressionInClosure_in_ruleXClosure8929);
            lv_expression_6_0=ruleXExpressionInClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_6_0, 
                      		"XExpressionInClosure");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,34,FOLLOW_34_in_ruleXClosure8941); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXClosure"


    // $ANTLR start "entryRuleXExpressionInClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3929:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpressionInClosure = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3930:2: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3931:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure8977);
            iv_ruleXExpressionInClosure=ruleXExpressionInClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpressionInClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInClosure8987); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpressionInClosure"


    // $ANTLR start "ruleXExpressionInClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3938:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* ) ;
    public final EObject ruleXExpressionInClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_expressions_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3941:28: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3942:1: ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3942:1: ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3942:2: () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )*
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3942:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3943:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3948:2: ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )*
            loop62:
            do {
                int alt62=2;
                int LA62_0 = input.LA(1);

                if ( ((LA62_0>=RULE_ID && LA62_0<=RULE_INT)||LA62_0==16||LA62_0==21||LA62_0==33||LA62_0==39||LA62_0==64||(LA62_0>=66 && LA62_0<=67)||LA62_0==71||LA62_0==76||LA62_0==78||(LA62_0>=81 && LA62_0<=85)||(LA62_0>=87 && LA62_0<=94)) ) {
                    alt62=1;
                }


                switch (alt62) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3948:3: ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )?
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3948:3: ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3949:1: (lv_expressions_1_0= ruleXExpressionInsideBlock )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3949:1: (lv_expressions_1_0= ruleXExpressionInsideBlock )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3950:3: lv_expressions_1_0= ruleXExpressionInsideBlock
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionInsideBlockParserRuleCall_1_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_ruleXExpressionInClosure9043);
            	    lv_expressions_1_0=ruleXExpressionInsideBlock();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_1_0, 
            	              		"XExpressionInsideBlock");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3966:2: (otherlv_2= ';' )?
            	    int alt61=2;
            	    int LA61_0 = input.LA(1);

            	    if ( (LA61_0==38) ) {
            	        alt61=1;
            	    }
            	    switch (alt61) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3966:4: otherlv_2= ';'
            	            {
            	            otherlv_2=(Token)match(input,38,FOLLOW_38_in_ruleXExpressionInClosure9056); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop62;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpressionInClosure"


    // $ANTLR start "entryRuleXShortClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3978:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
    public final EObject entryRuleXShortClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXShortClosure = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3979:2: (iv_ruleXShortClosure= ruleXShortClosure EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3980:2: iv_ruleXShortClosure= ruleXShortClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXShortClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure9096);
            iv_ruleXShortClosure=ruleXShortClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXShortClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure9106); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXShortClosure"


    // $ANTLR start "ruleXShortClosure"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3987:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXShortClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token lv_explicitSyntax_4_0=null;
        EObject lv_declaredFormalParameters_1_0 = null;

        EObject lv_declaredFormalParameters_3_0 = null;

        EObject lv_expression_5_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3990:28: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3991:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3991:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3991:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3991:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3991:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4007:6: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4007:7: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4007:7: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4008:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4013:2: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==RULE_ID||LA64_0==16||LA64_0==44) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4013:3: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4013:3: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4014:1: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4014:1: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4015:3: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure9214);
                    lv_declaredFormalParameters_1_0=ruleJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                      	        }
                             		add(
                             			current, 
                             			"declaredFormalParameters",
                              		lv_declaredFormalParameters_1_0, 
                              		"JvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4031:2: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    loop63:
                    do {
                        int alt63=2;
                        int LA63_0 = input.LA(1);

                        if ( (LA63_0==17) ) {
                            alt63=1;
                        }


                        switch (alt63) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4031:4: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                    	    {
                    	    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXShortClosure9227); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4035:1: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4036:1: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4036:1: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4037:3: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure9248);
                    	    lv_declaredFormalParameters_3_0=ruleJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"declaredFormalParameters",
                    	              		lv_declaredFormalParameters_3_0, 
                    	              		"JvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop63;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4053:6: ( (lv_explicitSyntax_4_0= '|' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4054:1: (lv_explicitSyntax_4_0= '|' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4054:1: (lv_explicitSyntax_4_0= '|' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4055:3: lv_explicitSyntax_4_0= '|'
            {
            lv_explicitSyntax_4_0=(Token)match(input,75,FOLLOW_75_in_ruleXShortClosure9270); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXShortClosureRule());
              	        }
                     		setWithLastConsumed(current, "explicitSyntax", true, "|");
              	    
            }

            }


            }


            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4068:4: ( (lv_expression_5_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4069:1: (lv_expression_5_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4069:1: (lv_expression_5_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4070:3: lv_expression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXShortClosure9306);
            lv_expression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXShortClosure"


    // $ANTLR start "entryRuleXParenthesizedExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4094:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXParenthesizedExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4095:2: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4096:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression9342);
            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression9352); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXParenthesizedExpression"


    // $ANTLR start "ruleXParenthesizedExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4103:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
    public final EObject ruleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4106:28: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4107:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4107:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4107:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleXParenthesizedExpression9389); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression9411);
            this_XExpression_1=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XExpression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleXParenthesizedExpression9422); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXParenthesizedExpression"


    // $ANTLR start "entryRuleXIfExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4132:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
    public final EObject entryRuleXIfExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIfExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4133:2: (iv_ruleXIfExpression= ruleXIfExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4134:2: iv_ruleXIfExpression= ruleXIfExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIfExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression9458);
            iv_ruleXIfExpression=ruleXIfExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIfExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression9468); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIfExpression"


    // $ANTLR start "ruleXIfExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4141:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXIfExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_if_3_0 = null;

        EObject lv_then_5_0 = null;

        EObject lv_else_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4144:28: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4145:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4145:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4145:2: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4145:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4146:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,76,FOLLOW_76_in_ruleXIfExpression9514); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleXIfExpression9526); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4159:1: ( (lv_if_3_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4160:1: (lv_if_3_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4160:1: (lv_if_3_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4161:3: lv_if_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression9547);
            lv_if_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"if",
                      		lv_if_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXIfExpression9559); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4181:1: ( (lv_then_5_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4182:1: (lv_then_5_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4182:1: (lv_then_5_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4183:3: lv_then_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression9580);
            lv_then_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:2: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==77) ) {
                int LA65_1 = input.LA(2);

                if ( (synpred18_InternalEveDesc()) ) {
                    alt65=1;
                }
            }
            switch (alt65) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:3: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:3: ( ( 'else' )=>otherlv_6= 'else' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:4: ( 'else' )=>otherlv_6= 'else'
                    {
                    otherlv_6=(Token)match(input,77,FOLLOW_77_in_ruleXIfExpression9601); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
                          
                    }

                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4204:2: ( (lv_else_7_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4205:1: (lv_else_7_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4205:1: (lv_else_7_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4206:3: lv_else_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression9623);
                    lv_else_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"else",
                              		lv_else_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIfExpression"


    // $ANTLR start "entryRuleXSwitchExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4230:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXSwitchExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4231:2: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4232:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression9661);
            iv_ruleXSwitchExpression=ruleXSwitchExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXSwitchExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression9671); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXSwitchExpression"


    // $ANTLR start "ruleXSwitchExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4239:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' ) ;
    public final EObject ruleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_localVarName_2_0 = null;

        EObject lv_switch_4_0 = null;

        EObject lv_cases_6_0 = null;

        EObject lv_default_9_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4242:28: ( ( () otherlv_1= 'switch' ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4243:1: ( () otherlv_1= 'switch' ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4243:1: ( () otherlv_1= 'switch' ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4243:2: () otherlv_1= 'switch' ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4243:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4244:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,78,FOLLOW_78_in_ruleXSwitchExpression9717); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:1: ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==RULE_ID) ) {
                int LA66_1 = input.LA(2);

                if ( (LA66_1==19) && (synpred19_InternalEveDesc())) {
                    alt66=1;
                }
            }
            switch (alt66) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:2: ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4258:5: ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4258:6: ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':'
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4258:6: ( (lv_localVarName_2_0= ruleValidID ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4259:1: (lv_localVarName_2_0= ruleValidID )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4259:1: (lv_localVarName_2_0= ruleValidID )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4260:3: lv_localVarName_2_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getLocalVarNameValidIDParserRuleCall_2_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXSwitchExpression9758);
                    lv_localVarName_2_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"localVarName",
                              		lv_localVarName_2_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleXSwitchExpression9770); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_1());
                          
                    }

                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4280:4: ( (lv_switch_4_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4281:1: (lv_switch_4_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4281:1: (lv_switch_4_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4282:3: lv_switch_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression9794);
            lv_switch_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"switch",
                      		lv_switch_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleXSwitchExpression9806); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4302:1: ( (lv_cases_6_0= ruleXCasePart ) )+
            int cnt67=0;
            loop67:
            do {
                int alt67=2;
                int LA67_0 = input.LA(1);

                if ( (LA67_0==RULE_ID||LA67_0==16||LA67_0==19||LA67_0==44||LA67_0==80) ) {
                    alt67=1;
                }


                switch (alt67) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4303:1: (lv_cases_6_0= ruleXCasePart )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4303:1: (lv_cases_6_0= ruleXCasePart )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4304:3: lv_cases_6_0= ruleXCasePart
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXCasePart_in_ruleXSwitchExpression9827);
            	    lv_cases_6_0=ruleXCasePart();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"cases",
            	              		lv_cases_6_0, 
            	              		"XCasePart");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt67 >= 1 ) break loop67;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(67, input);
                        throw eee;
                }
                cnt67++;
            } while (true);

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4320:3: (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==79) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4320:5: otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) )
                    {
                    otherlv_7=(Token)match(input,79,FOLLOW_79_in_ruleXSwitchExpression9841); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_6_0());
                          
                    }
                    otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleXSwitchExpression9853); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_6_1());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4328:1: ( (lv_default_9_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4329:1: (lv_default_9_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4329:1: (lv_default_9_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4330:3: lv_default_9_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_6_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression9874);
                    lv_default_9_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"default",
                              		lv_default_9_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,22,FOLLOW_22_in_ruleXSwitchExpression9888); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_7());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXSwitchExpression"


    // $ANTLR start "entryRuleXCasePart"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4358:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
    public final EObject entryRuleXCasePart() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCasePart = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4359:2: (iv_ruleXCasePart= ruleXCasePart EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4360:2: iv_ruleXCasePart= ruleXCasePart EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCasePartRule()); 
            }
            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart9924);
            iv_ruleXCasePart=ruleXCasePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCasePart; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart9934); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCasePart"


    // $ANTLR start "ruleXCasePart"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4367:1: ruleXCasePart returns [EObject current=null] : ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCasePart() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_typeGuard_0_0 = null;

        EObject lv_case_2_0 = null;

        EObject lv_then_4_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4370:28: ( ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4371:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4371:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4371:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4371:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==RULE_ID||LA69_0==16||LA69_0==44) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4372:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4372:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4373:3: lv_typeGuard_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCasePart9980);
                    lv_typeGuard_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"typeGuard",
                              		lv_typeGuard_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4389:3: (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==80) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4389:5: otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) )
                    {
                    otherlv_1=(Token)match(input,80,FOLLOW_80_in_ruleXCasePart9994); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXCasePartAccess().getCaseKeyword_1_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4393:1: ( (lv_case_2_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4394:1: (lv_case_2_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4394:1: (lv_case_2_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4395:3: lv_case_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart10015);
                    lv_case_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"case",
                              		lv_case_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleXCasePart10029); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCasePartAccess().getColonKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4415:1: ( (lv_then_4_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4416:1: (lv_then_4_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4416:1: (lv_then_4_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4417:3: lv_then_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart10050);
            lv_then_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCasePart"


    // $ANTLR start "entryRuleXForLoopExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4441:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXForLoopExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4442:2: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4443:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression10086);
            iv_ruleXForLoopExpression=ruleXForLoopExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXForLoopExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression10096); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXForLoopExpression"


    // $ANTLR start "ruleXForLoopExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4450:1: ruleXForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
    public final EObject ruleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_declaredParam_3_0 = null;

        EObject lv_forExpression_5_0 = null;

        EObject lv_eachExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4453:28: ( ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4454:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4454:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4454:2: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4454:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4455:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,81,FOLLOW_81_in_ruleXForLoopExpression10142); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleXForLoopExpression10154); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4468:1: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4469:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4469:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4470:3: lv_declaredParam_3_0= ruleJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression10175);
            lv_declaredParam_3_0=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_3_0, 
                      		"JvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleXForLoopExpression10187); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4490:1: ( (lv_forExpression_5_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4491:1: (lv_forExpression_5_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4491:1: (lv_forExpression_5_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4492:3: lv_forExpression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression10208);
            lv_forExpression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"forExpression",
                      		lv_forExpression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleXForLoopExpression10220); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_6());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4512:1: ( (lv_eachExpression_7_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4513:1: (lv_eachExpression_7_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4513:1: (lv_eachExpression_7_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4514:3: lv_eachExpression_7_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression10241);
            lv_eachExpression_7_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"eachExpression",
                      		lv_eachExpression_7_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXForLoopExpression"


    // $ANTLR start "entryRuleXWhileExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4538:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
    public final EObject entryRuleXWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXWhileExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4539:2: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4540:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression10277);
            iv_ruleXWhileExpression=ruleXWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression10287); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXWhileExpression"


    // $ANTLR start "ruleXWhileExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4547:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_predicate_3_0 = null;

        EObject lv_body_5_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4550:28: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4551:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4551:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4551:2: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4551:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4552:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,82,FOLLOW_82_in_ruleXWhileExpression10333); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleXWhileExpression10345); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4565:1: ( (lv_predicate_3_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4566:1: (lv_predicate_3_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4566:1: (lv_predicate_3_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4567:3: lv_predicate_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression10366);
            lv_predicate_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXWhileExpression10378); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4587:1: ( (lv_body_5_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4588:1: (lv_body_5_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4588:1: (lv_body_5_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4589:3: lv_body_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression10399);
            lv_body_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXWhileExpression"


    // $ANTLR start "entryRuleXDoWhileExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4613:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXDoWhileExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4614:2: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4615:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression10435);
            iv_ruleXDoWhileExpression=ruleXDoWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXDoWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression10445); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXDoWhileExpression"


    // $ANTLR start "ruleXDoWhileExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4622:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
    public final EObject ruleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_body_2_0 = null;

        EObject lv_predicate_5_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4625:28: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4626:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4626:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4626:2: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4626:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4627:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,83,FOLLOW_83_in_ruleXDoWhileExpression10491); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4636:1: ( (lv_body_2_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4637:1: (lv_body_2_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4637:1: (lv_body_2_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4638:3: lv_body_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression10512);
            lv_body_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,82,FOLLOW_82_in_ruleXDoWhileExpression10524); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,16,FOLLOW_16_in_ruleXDoWhileExpression10536); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4662:1: ( (lv_predicate_5_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4663:1: (lv_predicate_5_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4663:1: (lv_predicate_5_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4664:3: lv_predicate_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression10557);
            lv_predicate_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleXDoWhileExpression10569); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXDoWhileExpression"


    // $ANTLR start "entryRuleXBlockExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4692:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
    public final EObject entryRuleXBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBlockExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4693:2: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4694:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression10605);
            iv_ruleXBlockExpression=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression10615); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBlockExpression"


    // $ANTLR start "ruleXBlockExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4701:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
    public final EObject ruleXBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_expressions_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4704:28: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4705:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4705:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4705:2: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4705:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4706:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleXBlockExpression10661); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4715:1: ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )*
            loop72:
            do {
                int alt72=2;
                int LA72_0 = input.LA(1);

                if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_INT)||LA72_0==16||LA72_0==21||LA72_0==33||LA72_0==39||LA72_0==64||(LA72_0>=66 && LA72_0<=67)||LA72_0==71||LA72_0==76||LA72_0==78||(LA72_0>=81 && LA72_0<=85)||(LA72_0>=87 && LA72_0<=94)) ) {
                    alt72=1;
                }


                switch (alt72) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4715:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )?
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4715:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4716:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4716:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4717:3: lv_expressions_2_0= ruleXExpressionInsideBlock
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionInsideBlockParserRuleCall_2_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression10683);
            	    lv_expressions_2_0=ruleXExpressionInsideBlock();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_2_0, 
            	              		"XExpressionInsideBlock");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4733:2: (otherlv_3= ';' )?
            	    int alt71=2;
            	    int LA71_0 = input.LA(1);

            	    if ( (LA71_0==38) ) {
            	        alt71=1;
            	    }
            	    switch (alt71) {
            	        case 1 :
            	            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4733:4: otherlv_3= ';'
            	            {
            	            otherlv_3=(Token)match(input,38,FOLLOW_38_in_ruleXBlockExpression10696); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop72;
                }
            } while (true);

            otherlv_4=(Token)match(input,22,FOLLOW_22_in_ruleXBlockExpression10712); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBlockExpression"


    // $ANTLR start "entryRuleXExpressionInsideBlock"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4749:1: entryRuleXExpressionInsideBlock returns [EObject current=null] : iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF ;
    public final EObject entryRuleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpressionInsideBlock = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4750:2: (iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4751:2: iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionInsideBlockRule()); 
            }
            pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock10748);
            iv_ruleXExpressionInsideBlock=ruleXExpressionInsideBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpressionInsideBlock; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInsideBlock10758); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpressionInsideBlock"


    // $ANTLR start "ruleXExpressionInsideBlock"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4758:1: ruleXExpressionInsideBlock returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
    public final EObject ruleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject this_XVariableDeclaration_0 = null;

        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4761:28: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4762:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4762:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==39||LA73_0==84) ) {
                alt73=1;
            }
            else if ( ((LA73_0>=RULE_ID && LA73_0<=RULE_INT)||LA73_0==16||LA73_0==21||LA73_0==33||LA73_0==64||(LA73_0>=66 && LA73_0<=67)||LA73_0==71||LA73_0==76||LA73_0==78||(LA73_0>=81 && LA73_0<=83)||LA73_0==85||(LA73_0>=87 && LA73_0<=94)) ) {
                alt73=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 73, 0, input);

                throw nvae;
            }
            switch (alt73) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4763:5: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXVariableDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock10805);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XVariableDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4773:5: this_XExpression_1= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock10832);
                    this_XExpression_1=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpressionInsideBlock"


    // $ANTLR start "entryRuleXVariableDeclaration"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4789:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXVariableDeclaration = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4790:2: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4791:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration10867);
            iv_ruleXVariableDeclaration=ruleXVariableDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXVariableDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration10877); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXVariableDeclaration"


    // $ANTLR start "ruleXVariableDeclaration"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4798:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_writeable_1_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_type_3_0 = null;

        AntlrDatatypeRuleToken lv_name_4_0 = null;

        AntlrDatatypeRuleToken lv_name_5_0 = null;

        EObject lv_right_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4801:28: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4802:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4802:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4802:2: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4802:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4803:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4808:2: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==39) ) {
                alt74=1;
            }
            else if ( (LA74_0==84) ) {
                alt74=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 74, 0, input);

                throw nvae;
            }
            switch (alt74) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4808:3: ( (lv_writeable_1_0= 'var' ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4808:3: ( (lv_writeable_1_0= 'var' ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4809:1: (lv_writeable_1_0= 'var' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4809:1: (lv_writeable_1_0= 'var' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4810:3: lv_writeable_1_0= 'var'
                    {
                    lv_writeable_1_0=(Token)match(input,39,FOLLOW_39_in_ruleXVariableDeclaration10930); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "writeable", true, "var");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4824:7: otherlv_2= 'val'
                    {
                    otherlv_2=(Token)match(input,84,FOLLOW_84_in_ruleXVariableDeclaration10961); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
                          
                    }

                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:2: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==RULE_ID) ) {
                int LA75_1 = input.LA(2);

                if ( (synpred20_InternalEveDesc()) ) {
                    alt75=1;
                }
                else if ( (true) ) {
                    alt75=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 75, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA75_0==16) && (synpred20_InternalEveDesc())) {
                alt75=1;
            }
            else if ( (LA75_0==44) && (synpred20_InternalEveDesc())) {
                alt75=1;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 75, 0, input);

                throw nvae;
            }
            switch (alt75) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4836:6: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4836:7: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4836:7: ( (lv_type_3_0= ruleJvmTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4837:1: (lv_type_3_0= ruleJvmTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4837:1: (lv_type_3_0= ruleJvmTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4838:3: lv_type_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration11009);
                    lv_type_3_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_3_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4854:2: ( (lv_name_4_0= ruleValidID ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4855:1: (lv_name_4_0= ruleValidID )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4855:1: (lv_name_4_0= ruleValidID )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4856:3: lv_name_4_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration11030);
                    lv_name_4_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_4_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4873:6: ( (lv_name_5_0= ruleValidID ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4873:6: ( (lv_name_5_0= ruleValidID ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4874:1: (lv_name_5_0= ruleValidID )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4874:1: (lv_name_5_0= ruleValidID )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4875:3: lv_name_5_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration11059);
                    lv_name_5_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_5_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4891:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            int alt76=2;
            int LA76_0 = input.LA(1);

            if ( (LA76_0==54) ) {
                alt76=1;
            }
            switch (alt76) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4891:5: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,54,FOLLOW_54_in_ruleXVariableDeclaration11073); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4895:1: ( (lv_right_7_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4896:1: (lv_right_7_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4896:1: (lv_right_7_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4897:3: lv_right_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXVariableDeclaration11094);
                    lv_right_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"right",
                              		lv_right_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXVariableDeclaration"


    // $ANTLR start "entryRuleJvmFormalParameter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4921:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmFormalParameter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4922:2: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4923:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter11132);
            iv_ruleJvmFormalParameter=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmFormalParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter11142); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmFormalParameter"


    // $ANTLR start "ruleJvmFormalParameter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4930:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
    public final EObject ruleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_parameterType_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4933:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4934:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4934:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4934:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4934:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==RULE_ID) ) {
                int LA77_1 = input.LA(2);

                if ( (LA77_1==RULE_ID||LA77_1==13||LA77_1==33||LA77_1==64) ) {
                    alt77=1;
                }
            }
            else if ( (LA77_0==16||LA77_0==44) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4935:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4935:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4936:3: lv_parameterType_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter11188);
                    lv_parameterType_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"parameterType",
                              		lv_parameterType_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4952:3: ( (lv_name_1_0= ruleValidID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4953:1: (lv_name_1_0= ruleValidID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4953:1: (lv_name_1_0= ruleValidID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4954:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleJvmFormalParameter11210);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmFormalParameter"


    // $ANTLR start "entryRuleFullJvmFormalParameter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4978:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFullJvmFormalParameter = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4979:2: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4980:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter11246);
            iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFullJvmFormalParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFullJvmFormalParameter11256); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFullJvmFormalParameter"


    // $ANTLR start "ruleFullJvmFormalParameter"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4987:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
    public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_parameterType_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4990:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4991:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4991:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4991:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4991:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4992:1: (lv_parameterType_0_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4992:1: (lv_parameterType_0_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4993:3: lv_parameterType_0_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleFullJvmFormalParameter11302);
            lv_parameterType_0_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"parameterType",
                      		lv_parameterType_0_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5009:2: ( (lv_name_1_0= ruleValidID ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5010:1: (lv_name_1_0= ruleValidID )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5010:1: (lv_name_1_0= ruleValidID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5011:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleFullJvmFormalParameter11323);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFullJvmFormalParameter"


    // $ANTLR start "entryRuleXFeatureCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5035:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
    public final EObject entryRuleXFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFeatureCall = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5036:2: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5037:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall11359);
            iv_ruleXFeatureCall=ruleXFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall11369); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFeatureCall"


    // $ANTLR start "ruleXFeatureCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5044:1: ruleXFeatureCall returns [EObject current=null] : ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? ) ;
    public final EObject ruleXFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token lv_explicitOperationCall_8_0=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_3_0 = null;

        EObject lv_typeArguments_5_0 = null;

        EObject lv_featureCallArguments_9_0 = null;

        EObject lv_featureCallArguments_10_0 = null;

        EObject lv_featureCallArguments_12_0 = null;

        EObject lv_featureCallArguments_14_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5047:28: ( ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5048:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5048:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5048:2: () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5048:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5049:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5054:2: ( ( ruleStaticQualifier ) )?
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==RULE_ID) ) {
                int LA78_1 = input.LA(2);

                if ( (LA78_1==86) ) {
                    alt78=1;
                }
            }
            switch (alt78) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5055:1: ( ruleStaticQualifier )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5055:1: ( ruleStaticQualifier )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5056:3: ruleStaticQualifier
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getDeclaringTypeJvmDeclaredTypeCrossReference_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall11426);
                    ruleStaticQualifier();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5069:3: (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )?
            int alt80=2;
            int LA80_0 = input.LA(1);

            if ( (LA80_0==64) ) {
                alt80=1;
            }
            switch (alt80) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5069:5: otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>'
                    {
                    otherlv_2=(Token)match(input,64,FOLLOW_64_in_ruleXFeatureCall11440); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_2_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5073:1: ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5074:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5074:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5075:3: lv_typeArguments_3_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall11461);
                    lv_typeArguments_3_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_3_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5091:2: (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )*
                    loop79:
                    do {
                        int alt79=2;
                        int LA79_0 = input.LA(1);

                        if ( (LA79_0==17) ) {
                            alt79=1;
                        }


                        switch (alt79) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5091:4: otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleXFeatureCall11474); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getXFeatureCallAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5095:1: ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5096:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5096:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5097:3: lv_typeArguments_5_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall11495);
                    	    lv_typeArguments_5_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_5_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop79;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,63,FOLLOW_63_in_ruleXFeatureCall11509); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5117:3: ( ( ruleIdOrSuper ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5118:1: ( ruleIdOrSuper )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5118:1: ( ruleIdOrSuper )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5119:3: ruleIdOrSuper
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXFeatureCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall11534);
            ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5132:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
            int alt83=2;
            alt83 = dfa83.predict(input);
            switch (alt83) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5132:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5132:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5132:4: ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5139:1: (lv_explicitOperationCall_8_0= '(' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5140:3: lv_explicitOperationCall_8_0= '('
                    {
                    lv_explicitOperationCall_8_0=(Token)match(input,16,FOLLOW_16_in_ruleXFeatureCall11568); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_explicitOperationCall_8_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_4_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "explicitOperationCall", true, "(");
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?
                    int alt82=3;
                    alt82 = dfa82.predict(input);
                    switch (alt82) {
                        case 1 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5170:1: (lv_featureCallArguments_9_0= ruleXShortClosure )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5171:3: lv_featureCallArguments_9_0= ruleXShortClosure
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXShortClosure_in_ruleXFeatureCall11653);
                            lv_featureCallArguments_9_0=ruleXShortClosure();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_9_0, 
                                      		"XShortClosure");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5188:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5188:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5188:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5188:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5189:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5189:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5190:3: lv_featureCallArguments_10_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall11681);
                            lv_featureCallArguments_10_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_10_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5206:2: (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            loop81:
                            do {
                                int alt81=2;
                                int LA81_0 = input.LA(1);

                                if ( (LA81_0==17) ) {
                                    alt81=1;
                                }


                                switch (alt81) {
                            	case 1 :
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5206:4: otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    {
                            	    otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleXFeatureCall11694); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_11, grammarAccess.getXFeatureCallAccess().getCommaKeyword_4_1_1_1_0());
                            	          
                            	    }
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5210:1: ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5211:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    {
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5211:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5212:3: lv_featureCallArguments_12_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall11715);
                            	    lv_featureCallArguments_12_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"featureCallArguments",
                            	              		lv_featureCallArguments_12_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop81;
                                }
                            } while (true);


                            }


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,18,FOLLOW_18_in_ruleXFeatureCall11732); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_4_2());
                          
                    }

                    }
                    break;

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5232:3: ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?
            int alt84=2;
            alt84 = dfa84.predict(input);
            switch (alt84) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5232:4: ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5237:1: (lv_featureCallArguments_14_0= ruleXClosure )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5238:3: lv_featureCallArguments_14_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXFeatureCall11765);
                    lv_featureCallArguments_14_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                      	        }
                             		add(
                             			current, 
                             			"featureCallArguments",
                              		lv_featureCallArguments_14_0, 
                              		"XClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFeatureCall"


    // $ANTLR start "entryRuleIdOrSuper"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5262:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
    public final String entryRuleIdOrSuper() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5263:2: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5264:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIdOrSuperRule()); 
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper11803);
            iv_ruleIdOrSuper=ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIdOrSuper.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper11814); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIdOrSuper"


    // $ANTLR start "ruleIdOrSuper"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5271:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'super' ) ;
    public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5274:28: ( (this_ValidID_0= ruleValidID | kw= 'super' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5275:1: (this_ValidID_0= ruleValidID | kw= 'super' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5275:1: (this_ValidID_0= ruleValidID | kw= 'super' )
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==RULE_ID) ) {
                alt85=1;
            }
            else if ( (LA85_0==85) ) {
                alt85=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 85, 0, input);

                throw nvae;
            }
            switch (alt85) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5276:5: this_ValidID_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdOrSuperAccess().getValidIDParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleIdOrSuper11861);
                    this_ValidID_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ValidID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5288:2: kw= 'super'
                    {
                    kw=(Token)match(input,85,FOLLOW_85_in_ruleIdOrSuper11885); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIdOrSuper"


    // $ANTLR start "entryRuleStaticQualifier"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5301:1: entryRuleStaticQualifier returns [String current=null] : iv_ruleStaticQualifier= ruleStaticQualifier EOF ;
    public final String entryRuleStaticQualifier() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleStaticQualifier = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5302:2: (iv_ruleStaticQualifier= ruleStaticQualifier EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5303:2: iv_ruleStaticQualifier= ruleStaticQualifier EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStaticQualifierRule()); 
            }
            pushFollow(FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier11926);
            iv_ruleStaticQualifier=ruleStaticQualifier();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStaticQualifier.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStaticQualifier11937); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStaticQualifier"


    // $ANTLR start "ruleStaticQualifier"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5310:1: ruleStaticQualifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '::' )+ ;
    public final AntlrDatatypeRuleToken ruleStaticQualifier() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5313:28: ( (this_ValidID_0= ruleValidID kw= '::' )+ )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5314:1: (this_ValidID_0= ruleValidID kw= '::' )+
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5314:1: (this_ValidID_0= ruleValidID kw= '::' )+
            int cnt86=0;
            loop86:
            do {
                int alt86=2;
                int LA86_0 = input.LA(1);

                if ( (LA86_0==RULE_ID) ) {
                    int LA86_2 = input.LA(2);

                    if ( (LA86_2==86) ) {
                        alt86=1;
                    }


                }


                switch (alt86) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5315:5: this_ValidID_0= ruleValidID kw= '::'
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getStaticQualifierAccess().getValidIDParserRuleCall_0()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleStaticQualifier11984);
            	    this_ValidID_0=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_0);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }
            	    kw=(Token)match(input,86,FOLLOW_86_in_ruleStaticQualifier12002); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getStaticQualifierAccess().getColonColonKeyword_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    if ( cnt86 >= 1 ) break loop86;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(86, input);
                        throw eee;
                }
                cnt86++;
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStaticQualifier"


    // $ANTLR start "entryRuleXConstructorCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5339:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
    public final EObject entryRuleXConstructorCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXConstructorCall = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5340:2: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5341:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXConstructorCallRule()); 
            }
            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall12043);
            iv_ruleXConstructorCall=ruleXConstructorCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXConstructorCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall12053); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXConstructorCall"


    // $ANTLR start "ruleXConstructorCall"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5348:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
    public final EObject ruleXConstructorCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_4_0 = null;

        EObject lv_typeArguments_6_0 = null;

        EObject lv_arguments_9_0 = null;

        EObject lv_arguments_10_0 = null;

        EObject lv_arguments_12_0 = null;

        EObject lv_arguments_14_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5351:28: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5352:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5352:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5352:2: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5352:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5353:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,87,FOLLOW_87_in_ruleXConstructorCall12099); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5362:1: ( ( ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5363:1: ( ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5363:1: ( ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5364:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXConstructorCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXConstructorCall12122);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5377:2: (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==64) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5377:4: otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,64,FOLLOW_64_in_ruleXConstructorCall12135); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5381:1: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5382:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5382:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5383:3: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall12156);
                    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_4_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5399:2: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
                    loop87:
                    do {
                        int alt87=2;
                        int LA87_0 = input.LA(1);

                        if ( (LA87_0==17) ) {
                            alt87=1;
                        }


                        switch (alt87) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5399:4: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleXConstructorCall12169); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5403:1: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5404:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5404:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5405:3: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall12190);
                    	    lv_typeArguments_6_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_6_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop87;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,63,FOLLOW_63_in_ruleXConstructorCall12204); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            otherlv_8=(Token)match(input,16,FOLLOW_16_in_ruleXConstructorCall12218); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getXConstructorCallAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
            int alt90=3;
            alt90 = dfa90.predict(input);
            switch (alt90) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5446:1: (lv_arguments_9_0= ruleXShortClosure )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5447:3: lv_arguments_9_0= ruleXShortClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_5_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXShortClosure_in_ruleXConstructorCall12290);
                    lv_arguments_9_0=ruleXShortClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_9_0, 
                              		"XShortClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5464:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5464:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5464:7: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5464:7: ( (lv_arguments_10_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5465:1: (lv_arguments_10_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5465:1: (lv_arguments_10_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5466:3: lv_arguments_10_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_5_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall12318);
                    lv_arguments_10_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_10_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5482:2: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                    loop89:
                    do {
                        int alt89=2;
                        int LA89_0 = input.LA(1);

                        if ( (LA89_0==17) ) {
                            alt89=1;
                        }


                        switch (alt89) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5482:4: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                    	    {
                    	    otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleXConstructorCall12331); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_5_1_1_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5486:1: ( (lv_arguments_12_0= ruleXExpression ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5487:1: (lv_arguments_12_0= ruleXExpression )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5487:1: (lv_arguments_12_0= ruleXExpression )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5488:3: lv_arguments_12_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_5_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall12352);
                    	    lv_arguments_12_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_12_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop89;
                        }
                    } while (true);


                    }


                    }
                    break;

            }

            otherlv_13=(Token)match(input,18,FOLLOW_18_in_ruleXConstructorCall12369); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_6());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5508:1: ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )?
            int alt91=2;
            alt91 = dfa91.predict(input);
            switch (alt91) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5508:2: ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5513:1: (lv_arguments_14_0= ruleXClosure )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5514:3: lv_arguments_14_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_7_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXConstructorCall12400);
                    lv_arguments_14_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_14_0, 
                              		"XClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXConstructorCall"


    // $ANTLR start "entryRuleXBooleanLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5538:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBooleanLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5539:2: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5540:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral12437);
            iv_ruleXBooleanLiteral=ruleXBooleanLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBooleanLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral12447); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBooleanLiteral"


    // $ANTLR start "ruleXBooleanLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5547:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
    public final EObject ruleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_isTrue_2_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5550:28: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5551:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5551:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5551:2: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5551:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5552:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5557:2: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            int alt92=2;
            int LA92_0 = input.LA(1);

            if ( (LA92_0==88) ) {
                alt92=1;
            }
            else if ( (LA92_0==89) ) {
                alt92=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 92, 0, input);

                throw nvae;
            }
            switch (alt92) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5557:4: otherlv_1= 'false'
                    {
                    otherlv_1=(Token)match(input,88,FOLLOW_88_in_ruleXBooleanLiteral12494); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5562:6: ( (lv_isTrue_2_0= 'true' ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5562:6: ( (lv_isTrue_2_0= 'true' ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5563:1: (lv_isTrue_2_0= 'true' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5563:1: (lv_isTrue_2_0= 'true' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5564:3: lv_isTrue_2_0= 'true'
                    {
                    lv_isTrue_2_0=(Token)match(input,89,FOLLOW_89_in_ruleXBooleanLiteral12518); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBooleanLiteralRule());
                      	        }
                             		setWithLastConsumed(current, "isTrue", true, "true");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBooleanLiteral"


    // $ANTLR start "entryRuleXNullLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5585:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
    public final EObject entryRuleXNullLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNullLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5586:2: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5587:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNullLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral12568);
            iv_ruleXNullLiteral=ruleXNullLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNullLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral12578); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNullLiteral"


    // $ANTLR start "ruleXNullLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5594:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
    public final EObject ruleXNullLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5597:28: ( ( () otherlv_1= 'null' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5598:1: ( () otherlv_1= 'null' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5598:1: ( () otherlv_1= 'null' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5598:2: () otherlv_1= 'null'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5598:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5599:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,90,FOLLOW_90_in_ruleXNullLiteral12624); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNullLiteral"


    // $ANTLR start "entryRuleXIntLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5616:1: entryRuleXIntLiteral returns [EObject current=null] : iv_ruleXIntLiteral= ruleXIntLiteral EOF ;
    public final EObject entryRuleXIntLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIntLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5617:2: (iv_ruleXIntLiteral= ruleXIntLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5618:2: iv_ruleXIntLiteral= ruleXIntLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIntLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral12660);
            iv_ruleXIntLiteral=ruleXIntLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIntLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIntLiteral12670); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIntLiteral"


    // $ANTLR start "ruleXIntLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5625:1: ruleXIntLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_INT ) ) ) ;
    public final EObject ruleXIntLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5628:28: ( ( () ( (lv_value_1_0= RULE_INT ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5629:1: ( () ( (lv_value_1_0= RULE_INT ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5629:1: ( () ( (lv_value_1_0= RULE_INT ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5629:2: () ( (lv_value_1_0= RULE_INT ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5629:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5630:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIntLiteralAccess().getXIntLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5635:2: ( (lv_value_1_0= RULE_INT ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5636:1: (lv_value_1_0= RULE_INT )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5636:1: (lv_value_1_0= RULE_INT )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5637:3: lv_value_1_0= RULE_INT
            {
            lv_value_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleXIntLiteral12721); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXIntLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"INT");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIntLiteral"


    // $ANTLR start "entryRuleXStringLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5661:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
    public final EObject entryRuleXStringLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXStringLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5662:2: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5663:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXStringLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral12762);
            iv_ruleXStringLiteral=ruleXStringLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXStringLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral12772); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXStringLiteral"


    // $ANTLR start "ruleXStringLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5670:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleXStringLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5673:28: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5674:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5674:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5674:2: () ( (lv_value_1_0= RULE_STRING ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5674:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5675:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5680:2: ( (lv_value_1_0= RULE_STRING ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5681:1: (lv_value_1_0= RULE_STRING )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5681:1: (lv_value_1_0= RULE_STRING )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5682:3: lv_value_1_0= RULE_STRING
            {
            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleXStringLiteral12823); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXStringLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXStringLiteral"


    // $ANTLR start "entryRuleXTypeLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5706:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTypeLiteral = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5707:2: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5708:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral12864);
            iv_ruleXTypeLiteral=ruleXTypeLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTypeLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral12874); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTypeLiteral"


    // $ANTLR start "ruleXTypeLiteral"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5715:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' ) ;
    public final EObject ruleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5718:28: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5719:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5719:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5719:2: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')'
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5719:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5720:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,91,FOLLOW_91_in_ruleXTypeLiteral12920); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleXTypeLiteral12932); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5733:1: ( ( ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5734:1: ( ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5734:1: ( ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5735:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXTypeLiteralRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral12955);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXTypeLiteral12967); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTypeLiteral"


    // $ANTLR start "entryRuleXThrowExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5760:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
    public final EObject entryRuleXThrowExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXThrowExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5761:2: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5762:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression13003);
            iv_ruleXThrowExpression=ruleXThrowExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXThrowExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression13013); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXThrowExpression"


    // $ANTLR start "ruleXThrowExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5769:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
    public final EObject ruleXThrowExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5772:28: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5773:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5773:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5773:2: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5773:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5774:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,92,FOLLOW_92_in_ruleXThrowExpression13059); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5783:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5784:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5784:1: (lv_expression_2_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5785:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXThrowExpression13080);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXThrowExpression"


    // $ANTLR start "entryRuleXReturnExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5809:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
    public final EObject entryRuleXReturnExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXReturnExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5810:2: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5811:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression13116);
            iv_ruleXReturnExpression=ruleXReturnExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXReturnExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression13126); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXReturnExpression"


    // $ANTLR start "ruleXReturnExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5818:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
    public final EObject ruleXReturnExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5821:28: ( ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5822:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5822:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5822:2: () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5822:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5823:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,93,FOLLOW_93_in_ruleXReturnExpression13172); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5832:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            int alt93=2;
            alt93 = dfa93.predict(input);
            switch (alt93) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5832:2: ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5837:1: (lv_expression_2_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5838:3: lv_expression_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXReturnExpression13203);
                    lv_expression_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"expression",
                              		lv_expression_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXReturnExpression"


    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5862:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTryCatchFinallyExpression = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5863:2: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5864:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression13240);
            iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTryCatchFinallyExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression13250); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTryCatchFinallyExpression"


    // $ANTLR start "ruleXTryCatchFinallyExpression"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5871:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
    public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_expression_2_0 = null;

        EObject lv_catchClauses_3_0 = null;

        EObject lv_finallyExpression_5_0 = null;

        EObject lv_finallyExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5874:28: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5875:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5875:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5875:2: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5875:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5876:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,94,FOLLOW_94_in_ruleXTryCatchFinallyExpression13296); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5885:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5886:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5886:1: (lv_expression_2_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5887:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13317);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:2: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            int alt96=2;
            int LA96_0 = input.LA(1);

            if ( (LA96_0==96) ) {
                alt96=1;
            }
            else if ( (LA96_0==95) ) {
                alt96=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 96, 0, input);

                throw nvae;
            }
            switch (alt96) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
                    int cnt94=0;
                    loop94:
                    do {
                        int alt94=2;
                        int LA94_0 = input.LA(1);

                        if ( (LA94_0==96) ) {
                            int LA94_2 = input.LA(2);

                            if ( (synpred27_InternalEveDesc()) ) {
                                alt94=1;
                            }


                        }


                        switch (alt94) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:5: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5905:1: (lv_catchClauses_3_0= ruleXCatchClause )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5906:3: lv_catchClauses_3_0= ruleXCatchClause
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression13347);
                    	    lv_catchClauses_3_0=ruleXCatchClause();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"catchClauses",
                    	              		lv_catchClauses_3_0, 
                    	              		"XCatchClause");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt94 >= 1 ) break loop94;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(94, input);
                                throw eee;
                        }
                        cnt94++;
                    } while (true);

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:3: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    int alt95=2;
                    int LA95_0 = input.LA(1);

                    if ( (LA95_0==95) ) {
                        int LA95_1 = input.LA(2);

                        if ( (synpred28_InternalEveDesc()) ) {
                            alt95=1;
                        }
                    }
                    switch (alt95) {
                        case 1 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:4: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:4: ( ( 'finally' )=>otherlv_4= 'finally' )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:5: ( 'finally' )=>otherlv_4= 'finally'
                            {
                            otherlv_4=(Token)match(input,95,FOLLOW_95_in_ruleXTryCatchFinallyExpression13369); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
                                  
                            }

                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5927:2: ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5928:1: (lv_finallyExpression_5_0= ruleXExpression )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5928:1: (lv_finallyExpression_5_0= ruleXExpression )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5929:3: lv_finallyExpression_5_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13391);
                            lv_finallyExpression_5_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"finallyExpression",
                                      		lv_finallyExpression_5_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5946:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5946:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5946:8: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,95,FOLLOW_95_in_ruleXTryCatchFinallyExpression13413); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5950:1: ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5951:1: (lv_finallyExpression_7_0= ruleXExpression )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5951:1: (lv_finallyExpression_7_0= ruleXExpression )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5952:3: lv_finallyExpression_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13434);
                    lv_finallyExpression_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"finallyExpression",
                              		lv_finallyExpression_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTryCatchFinallyExpression"


    // $ANTLR start "entryRuleXCatchClause"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5976:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
    public final EObject entryRuleXCatchClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCatchClause = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5977:2: (iv_ruleXCatchClause= ruleXCatchClause EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5978:2: iv_ruleXCatchClause= ruleXCatchClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCatchClauseRule()); 
            }
            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause13472);
            iv_ruleXCatchClause=ruleXCatchClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCatchClause; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause13482); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCatchClause"


    // $ANTLR start "ruleXCatchClause"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5985:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCatchClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_declaredParam_2_0 = null;

        EObject lv_expression_4_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5988:28: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5989:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5989:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5989:2: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5989:2: ( ( 'catch' )=>otherlv_0= 'catch' )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5989:3: ( 'catch' )=>otherlv_0= 'catch'
            {
            otherlv_0=(Token)match(input,96,FOLLOW_96_in_ruleXCatchClause13527); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
                  
            }

            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleXCatchClause13540); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5998:1: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5999:1: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5999:1: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6000:3: lv_declaredParam_2_0= ruleFullJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleXCatchClause13561);
            lv_declaredParam_2_0=ruleFullJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_2_0, 
                      		"FullJvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleXCatchClause13573); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6020:1: ( (lv_expression_4_0= ruleXExpression ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6021:1: (lv_expression_4_0= ruleXExpression )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6021:1: (lv_expression_4_0= ruleXExpression )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6022:3: lv_expression_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCatchClause13594);
            lv_expression_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCatchClause"


    // $ANTLR start "entryRuleQualifiedName"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6046:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6047:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6048:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName13631);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName13642); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6055:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;

        AntlrDatatypeRuleToken this_ValidID_2 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6058:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6059:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6059:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6060:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName13689);
            this_ValidID_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ValidID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6070:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            loop97:
            do {
                int alt97=2;
                int LA97_0 = input.LA(1);

                if ( (LA97_0==13) ) {
                    int LA97_2 = input.LA(2);

                    if ( (LA97_2==RULE_ID) ) {
                        int LA97_3 = input.LA(3);

                        if ( (synpred30_InternalEveDesc()) ) {
                            alt97=1;
                        }


                    }


                }


                switch (alt97) {
            	case 1 :
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6070:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
            	    {
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6070:2: ( ( '.' )=>kw= '.' )
            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6070:3: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,13,FOLLOW_13_in_ruleQualifiedName13717); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	          
            	    }

            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName13740);
            	    this_ValidID_2=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop97;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleJvmTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6097:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmTypeReference = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6098:2: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6099:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference13787);
            iv_ruleJvmTypeReference=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference13797); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmTypeReference"


    // $ANTLR start "ruleJvmTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6106:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* ) | this_XFunctionTypeRef_4= ruleXFunctionTypeRef ) ;
    public final EObject ruleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject this_JvmParameterizedTypeReference_0 = null;

        EObject this_XFunctionTypeRef_4 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6109:28: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* ) | this_XFunctionTypeRef_4= ruleXFunctionTypeRef ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6110:1: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* ) | this_XFunctionTypeRef_4= ruleXFunctionTypeRef )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6110:1: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* ) | this_XFunctionTypeRef_4= ruleXFunctionTypeRef )
            int alt99=2;
            int LA99_0 = input.LA(1);

            if ( (LA99_0==RULE_ID) ) {
                alt99=1;
            }
            else if ( (LA99_0==16||LA99_0==44) ) {
                alt99=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 99, 0, input);

                throw nvae;
            }
            switch (alt99) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6110:2: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6110:2: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )* )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6111:5: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )*
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference13845);
                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmParameterizedTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:1: ( ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' ) )*
                    loop98:
                    do {
                        int alt98=2;
                        int LA98_0 = input.LA(1);

                        if ( (LA98_0==33) ) {
                            int LA98_2 = input.LA(2);

                            if ( (LA98_2==34) ) {
                                int LA98_3 = input.LA(3);

                                if ( (synpred31_InternalEveDesc()) ) {
                                    alt98=1;
                                }


                            }


                        }


                        switch (alt98) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:2: ( ( () '[' ']' ) )=> ( () otherlv_2= '[' otherlv_3= ']' )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6122:5: ( () otherlv_2= '[' otherlv_3= ']' )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6122:6: () otherlv_2= '[' otherlv_3= ']'
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6122:6: ()
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6123:5: 
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	              current = forceCreateModelElementAndSet(
                    	                  grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
                    	                  current);
                    	          
                    	    }

                    	    }

                    	    otherlv_2=(Token)match(input,33,FOLLOW_33_in_ruleJvmTypeReference13883); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getJvmTypeReferenceAccess().getLeftSquareBracketKeyword_0_1_0_1());
                    	          
                    	    }
                    	    otherlv_3=(Token)match(input,34,FOLLOW_34_in_ruleJvmTypeReference13895); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getJvmTypeReferenceAccess().getRightSquareBracketKeyword_0_1_0_2());
                    	          
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop98;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6138:5: this_XFunctionTypeRef_4= ruleXFunctionTypeRef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference13927);
                    this_XFunctionTypeRef_4=ruleXFunctionTypeRef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFunctionTypeRef_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmTypeReference"


    // $ANTLR start "entryRuleXFunctionTypeRef"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6154:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFunctionTypeRef = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6155:2: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6156:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
            }
            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef13962);
            iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFunctionTypeRef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef13972); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFunctionTypeRef"


    // $ANTLR start "ruleXFunctionTypeRef"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6163:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_paramTypes_1_0 = null;

        EObject lv_paramTypes_3_0 = null;

        EObject lv_returnType_6_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6166:28: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6167:1: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6167:1: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6167:2: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6167:2: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
            int alt102=2;
            int LA102_0 = input.LA(1);

            if ( (LA102_0==16) ) {
                alt102=1;
            }
            switch (alt102) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6167:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                    {
                    otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleXFunctionTypeRef14010); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                          
                    }
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6171:1: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
                    int alt101=2;
                    int LA101_0 = input.LA(1);

                    if ( (LA101_0==RULE_ID||LA101_0==16||LA101_0==44) ) {
                        alt101=1;
                    }
                    switch (alt101) {
                        case 1 :
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6171:2: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6171:2: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6172:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                            {
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6172:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6173:3: lv_paramTypes_1_0= ruleJvmTypeReference
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14032);
                            lv_paramTypes_1_0=ruleJvmTypeReference();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"paramTypes",
                                      		lv_paramTypes_1_0, 
                                      		"JvmTypeReference");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6189:2: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                            loop100:
                            do {
                                int alt100=2;
                                int LA100_0 = input.LA(1);

                                if ( (LA100_0==17) ) {
                                    alt100=1;
                                }


                                switch (alt100) {
                            	case 1 :
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6189:4: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                            	    {
                            	    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXFunctionTypeRef14045); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                            	          
                            	    }
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6193:1: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6194:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                            	    {
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6194:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                            	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6195:3: lv_paramTypes_3_0= ruleJvmTypeReference
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14066);
                            	    lv_paramTypes_3_0=ruleJvmTypeReference();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"paramTypes",
                            	              		lv_paramTypes_3_0, 
                            	              		"JvmTypeReference");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop100;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXFunctionTypeRef14082); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
                          
                    }

                    }
                    break;

            }

            otherlv_5=(Token)match(input,44,FOLLOW_44_in_ruleXFunctionTypeRef14096); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6219:1: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6220:1: (lv_returnType_6_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6220:1: (lv_returnType_6_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6221:3: lv_returnType_6_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14117);
            lv_returnType_6_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
              	        }
                     		set(
                     			current, 
                     			"returnType",
                      		lv_returnType_6_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFunctionTypeRef"


    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6245:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmParameterizedTypeReference = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6246:2: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6247:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference14153);
            iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmParameterizedTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference14163); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmParameterizedTypeReference"


    // $ANTLR start "ruleJvmParameterizedTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6254:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) ;
    public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_arguments_2_0 = null;

        EObject lv_arguments_4_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6257:28: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6258:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6258:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6258:2: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6258:2: ( ( ruleQualifiedName ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6259:1: ( ruleQualifiedName )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6259:1: ( ruleQualifiedName )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6260:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference14211);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            int alt104=2;
            alt104 = dfa104.predict(input);
            switch (alt104) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:3: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:3: ( ( '<' )=>otherlv_1= '<' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:4: ( '<' )=>otherlv_1= '<'
                    {
                    otherlv_1=(Token)match(input,64,FOLLOW_64_in_ruleJvmParameterizedTypeReference14232); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
                          
                    }

                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6278:2: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6279:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6279:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6280:3: lv_arguments_2_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference14254);
                    lv_arguments_2_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_2_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6296:2: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                    loop103:
                    do {
                        int alt103=2;
                        int LA103_0 = input.LA(1);

                        if ( (LA103_0==17) ) {
                            alt103=1;
                        }


                        switch (alt103) {
                    	case 1 :
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6296:4: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_3=(Token)match(input,17,FOLLOW_17_in_ruleJvmParameterizedTypeReference14267); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6300:1: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6301:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6301:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6302:3: lv_arguments_4_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference14288);
                    	    lv_arguments_4_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_4_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop103;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,63,FOLLOW_63_in_ruleJvmParameterizedTypeReference14302); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmParameterizedTypeReference"


    // $ANTLR start "entryRuleJvmArgumentTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6330:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmArgumentTypeReference = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6331:2: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6332:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference14340);
            iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmArgumentTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference14350); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmArgumentTypeReference"


    // $ANTLR start "ruleJvmArgumentTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6339:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
    public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject this_JvmTypeReference_0 = null;

        EObject this_JvmWildcardTypeReference_1 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6342:28: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6343:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6343:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==RULE_ID||LA105_0==16||LA105_0==44) ) {
                alt105=1;
            }
            else if ( (LA105_0==97) ) {
                alt105=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 105, 0, input);

                throw nvae;
            }
            switch (alt105) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6344:5: this_JvmTypeReference_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference14397);
                    this_JvmTypeReference_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6354:5: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference14424);
                    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmWildcardTypeReference_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmArgumentTypeReference"


    // $ANTLR start "entryRuleJvmWildcardTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6370:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmWildcardTypeReference = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6371:2: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6372:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference14459);
            iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmWildcardTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference14469); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmWildcardTypeReference"


    // $ANTLR start "ruleJvmWildcardTypeReference"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6379:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) ;
    public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_constraints_2_0 = null;

        EObject lv_constraints_3_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6382:28: ( ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6383:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6383:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6383:2: () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6383:2: ()
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6384:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,97,FOLLOW_97_in_ruleJvmWildcardTypeReference14515); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6393:1: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            int alt106=3;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==98) ) {
                alt106=1;
            }
            else if ( (LA106_0==85) ) {
                alt106=2;
            }
            switch (alt106) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6393:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6393:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6394:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6394:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6395:3: lv_constraints_2_0= ruleJvmUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference14537);
                    lv_constraints_2_0=ruleJvmUpperBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_2_0, 
                              		"JvmUpperBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6412:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6412:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6413:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6413:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6414:3: lv_constraints_3_0= ruleJvmLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference14564);
                    lv_constraints_3_0=ruleJvmLowerBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_3_0, 
                              		"JvmLowerBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmWildcardTypeReference"


    // $ANTLR start "entryRuleJvmUpperBound"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6438:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBound = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6439:2: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6440:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound14602);
            iv_ruleJvmUpperBound=ruleJvmUpperBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound14612); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBound"


    // $ANTLR start "ruleJvmUpperBound"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6447:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6450:28: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6451:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6451:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6451:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,98,FOLLOW_98_in_ruleJvmUpperBound14649); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6455:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6456:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6456:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6457:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound14670);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBound"


    // $ANTLR start "entryRuleJvmUpperBoundAnded"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6481:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBoundAnded = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6482:2: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6483:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded14706);
            iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBoundAnded; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded14716); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBoundAnded"


    // $ANTLR start "ruleJvmUpperBoundAnded"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6490:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6493:28: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6494:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6494:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6494:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,99,FOLLOW_99_in_ruleJvmUpperBoundAnded14753); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6498:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6499:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6499:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6500:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded14774);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBoundAnded"


    // $ANTLR start "entryRuleJvmLowerBound"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6524:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmLowerBound = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6525:2: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6526:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound14810);
            iv_ruleJvmLowerBound=ruleJvmLowerBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmLowerBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound14820); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmLowerBound"


    // $ANTLR start "ruleJvmLowerBound"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6533:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6536:28: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6537:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6537:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6537:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,85,FOLLOW_85_in_ruleJvmLowerBound14857); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
                  
            }
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6541:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6542:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6542:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6543:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound14878);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmLowerBound"


    // $ANTLR start "entryRuleValidID"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6569:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
    public final String entryRuleValidID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleValidID = null;


        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6570:2: (iv_ruleValidID= ruleValidID EOF )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6571:2: iv_ruleValidID= ruleValidID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValidIDRule()); 
            }
            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID14917);
            iv_ruleValidID=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValidID.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID14928); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValidID"


    // $ANTLR start "ruleValidID"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6578:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;

         enterRule(); 
            
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6581:28: (this_ID_0= RULE_ID )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6582:5: this_ID_0= RULE_ID
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID14967); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValidID"


    // $ANTLR start "ruleOperationType"
    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6597:1: ruleOperationType returns [Enumerator current=null] : ( (enumLiteral_0= 'get' ) | (enumLiteral_1= 'set' ) | (enumLiteral_2= 'add' ) | (enumLiteral_3= 'remove' ) | (enumLiteral_4= 'create' ) | (enumLiteral_5= 'destroy' ) ) ;
    public final Enumerator ruleOperationType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;

         enterRule(); 
        try {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6599:28: ( ( (enumLiteral_0= 'get' ) | (enumLiteral_1= 'set' ) | (enumLiteral_2= 'add' ) | (enumLiteral_3= 'remove' ) | (enumLiteral_4= 'create' ) | (enumLiteral_5= 'destroy' ) ) )
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6600:1: ( (enumLiteral_0= 'get' ) | (enumLiteral_1= 'set' ) | (enumLiteral_2= 'add' ) | (enumLiteral_3= 'remove' ) | (enumLiteral_4= 'create' ) | (enumLiteral_5= 'destroy' ) )
            {
            // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6600:1: ( (enumLiteral_0= 'get' ) | (enumLiteral_1= 'set' ) | (enumLiteral_2= 'add' ) | (enumLiteral_3= 'remove' ) | (enumLiteral_4= 'create' ) | (enumLiteral_5= 'destroy' ) )
            int alt107=6;
            switch ( input.LA(1) ) {
            case 100:
                {
                alt107=1;
                }
                break;
            case 101:
                {
                alt107=2;
                }
                break;
            case 102:
                {
                alt107=3;
                }
                break;
            case 103:
                {
                alt107=4;
                }
                break;
            case 104:
                {
                alt107=5;
                }
                break;
            case 105:
                {
                alt107=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 107, 0, input);

                throw nvae;
            }

            switch (alt107) {
                case 1 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6600:2: (enumLiteral_0= 'get' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6600:2: (enumLiteral_0= 'get' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6600:4: enumLiteral_0= 'get'
                    {
                    enumLiteral_0=(Token)match(input,100,FOLLOW_100_in_ruleOperationType15025); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getGetEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getOperationTypeAccess().getGetEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6606:6: (enumLiteral_1= 'set' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6606:6: (enumLiteral_1= 'set' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6606:8: enumLiteral_1= 'set'
                    {
                    enumLiteral_1=(Token)match(input,101,FOLLOW_101_in_ruleOperationType15042); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getSetEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getOperationTypeAccess().getSetEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6612:6: (enumLiteral_2= 'add' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6612:6: (enumLiteral_2= 'add' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6612:8: enumLiteral_2= 'add'
                    {
                    enumLiteral_2=(Token)match(input,102,FOLLOW_102_in_ruleOperationType15059); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getAddEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getOperationTypeAccess().getAddEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6618:6: (enumLiteral_3= 'remove' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6618:6: (enumLiteral_3= 'remove' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6618:8: enumLiteral_3= 'remove'
                    {
                    enumLiteral_3=(Token)match(input,103,FOLLOW_103_in_ruleOperationType15076); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getRemoveEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_3, grammarAccess.getOperationTypeAccess().getRemoveEnumLiteralDeclaration_3()); 
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6624:6: (enumLiteral_4= 'create' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6624:6: (enumLiteral_4= 'create' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6624:8: enumLiteral_4= 'create'
                    {
                    enumLiteral_4=(Token)match(input,104,FOLLOW_104_in_ruleOperationType15093); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getCreateEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_4, grammarAccess.getOperationTypeAccess().getCreateEnumLiteralDeclaration_4()); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6630:6: (enumLiteral_5= 'destroy' )
                    {
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6630:6: (enumLiteral_5= 'destroy' )
                    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6630:8: enumLiteral_5= 'destroy'
                    {
                    enumLiteral_5=(Token)match(input,105,FOLLOW_105_in_ruleOperationType15110); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getOperationTypeAccess().getDestroyEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_5, grammarAccess.getOperationTypeAccess().getDestroyEnumLiteralDeclaration_5()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOperationType"

    // $ANTLR start synpred1_InternalEveDesc
    public final void synpred1_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:4: ( () ( ( ruleOpMultiAssign ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:4: ( () ( ( ruleOpMultiAssign ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:5: () ( ( ruleOpMultiAssign ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2170:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2171:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2171:2: ( ( ruleOpMultiAssign ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2172:1: ( ruleOpMultiAssign )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2172:1: ( ruleOpMultiAssign )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2173:3: ruleOpMultiAssign
        {
        pushFollow(FOLLOW_ruleOpMultiAssign_in_synpred1_InternalEveDesc4590);
        ruleOpMultiAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred1_InternalEveDesc

    // $ANTLR start synpred2_InternalEveDesc
    public final void synpred2_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:3: ( ( () ( ( ruleOpOr ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:4: ( () ( ( ruleOpOr ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:4: ( () ( ( ruleOpOr ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:5: () ( ( ruleOpOr ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2298:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2299:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2299:2: ( ( ruleOpOr ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2300:1: ( ruleOpOr )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2300:1: ( ruleOpOr )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2301:3: ruleOpOr
        {
        pushFollow(FOLLOW_ruleOpOr_in_synpred2_InternalEveDesc4938);
        ruleOpOr();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred2_InternalEveDesc

    // $ANTLR start synpred3_InternalEveDesc
    public final void synpred3_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:3: ( ( () ( ( ruleOpAnd ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:4: ( () ( ( ruleOpAnd ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:4: ( () ( ( ruleOpAnd ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:5: () ( ( ruleOpAnd ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2399:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2400:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2400:2: ( ( ruleOpAnd ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2401:1: ( ruleOpAnd )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2401:1: ( ruleOpAnd )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2402:3: ruleOpAnd
        {
        pushFollow(FOLLOW_ruleOpAnd_in_synpred3_InternalEveDesc5197);
        ruleOpAnd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred3_InternalEveDesc

    // $ANTLR start synpred4_InternalEveDesc
    public final void synpred4_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:3: ( ( () ( ( ruleOpEquality ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:4: ( () ( ( ruleOpEquality ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:4: ( () ( ( ruleOpEquality ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:5: () ( ( ruleOpEquality ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2500:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2501:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2501:2: ( ( ruleOpEquality ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2502:1: ( ruleOpEquality )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2502:1: ( ruleOpEquality )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2503:3: ruleOpEquality
        {
        pushFollow(FOLLOW_ruleOpEquality_in_synpred4_InternalEveDesc5456);
        ruleOpEquality();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred4_InternalEveDesc

    // $ANTLR start synpred5_InternalEveDesc
    public final void synpred5_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:4: ( ( () 'instanceof' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:5: ( () 'instanceof' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:5: ( () 'instanceof' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:6: () 'instanceof'
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2608:6: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2609:1: 
        {
        }

        match(input,60,FOLLOW_60_in_synpred5_InternalEveDesc5732); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred5_InternalEveDesc

    // $ANTLR start synpred6_InternalEveDesc
    public final void synpred6_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:8: ( ( () ( ( ruleOpCompare ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:9: ( () ( ( ruleOpCompare ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:9: ( () ( ( ruleOpCompare ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:10: () ( ( ruleOpCompare ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2636:10: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2637:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2637:2: ( ( ruleOpCompare ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2638:1: ( ruleOpCompare )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2638:1: ( ruleOpCompare )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2639:3: ruleOpCompare
        {
        pushFollow(FOLLOW_ruleOpCompare_in_synpred6_InternalEveDesc5805);
        ruleOpCompare();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred6_InternalEveDesc

    // $ANTLR start synpred7_InternalEveDesc
    public final void synpred7_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:3: ( ( () ( ( ruleOpOther ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:4: ( () ( ( ruleOpOther ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:4: ( () ( ( ruleOpOther ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:5: () ( ( ruleOpOther ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2758:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2759:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2759:2: ( ( ruleOpOther ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2760:1: ( ruleOpOther )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2760:1: ( ruleOpOther )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2761:3: ruleOpOther
        {
        pushFollow(FOLLOW_ruleOpOther_in_synpred7_InternalEveDesc6124);
        ruleOpOther();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred7_InternalEveDesc

    // $ANTLR start synpred8_InternalEveDesc
    public final void synpred8_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:3: ( ( () ( ( ruleOpAdd ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:4: ( () ( ( ruleOpAdd ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:4: ( () ( ( ruleOpAdd ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:5: () ( ( ruleOpAdd ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2866:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2867:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2867:2: ( ( ruleOpAdd ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2868:1: ( ruleOpAdd )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2868:1: ( ruleOpAdd )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2869:3: ruleOpAdd
        {
        pushFollow(FOLLOW_ruleOpAdd_in_synpred8_InternalEveDesc6404);
        ruleOpAdd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred8_InternalEveDesc

    // $ANTLR start synpred9_InternalEveDesc
    public final void synpred9_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:3: ( ( () ( ( ruleOpMulti ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:4: ( () ( ( ruleOpMulti ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:4: ( () ( ( ruleOpMulti ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:5: () ( ( ruleOpMulti ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2974:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2975:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2975:2: ( ( ruleOpMulti ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2976:1: ( ruleOpMulti )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2976:1: ( ruleOpMulti )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:2977:3: ruleOpMulti
        {
        pushFollow(FOLLOW_ruleOpMulti_in_synpred9_InternalEveDesc6684);
        ruleOpMulti();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred9_InternalEveDesc

    // $ANTLR start synpred10_InternalEveDesc
    public final void synpred10_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:3: ( ( () 'as' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:4: ( () 'as' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:4: ( () 'as' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:5: () 'as'
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3207:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3208:1: 
        {
        }

        match(input,72,FOLLOW_72_in_synpred10_InternalEveDesc7278); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred10_InternalEveDesc

    // $ANTLR start synpred11_InternalEveDesc
    public final void synpred11_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:4: ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:5: ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:5: ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:6: () '.' ( ( ruleValidID ) ) ruleOpSingleAssign
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3267:6: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3268:1: 
        {
        }

        match(input,13,FOLLOW_13_in_synpred11_InternalEveDesc7432); if (state.failed) return ;
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3269:1: ( ( ruleValidID ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3270:1: ( ruleValidID )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3270:1: ( ruleValidID )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3271:3: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred11_InternalEveDesc7441);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        pushFollow(FOLLOW_ruleOpSingleAssign_in_synpred11_InternalEveDesc7447);
        ruleOpSingleAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred11_InternalEveDesc

    // $ANTLR start synpred12_InternalEveDesc
    public final void synpred12_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:10: () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3325:10: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3326:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3326:2: ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        int alt108=3;
        switch ( input.LA(1) ) {
        case 13:
            {
            alt108=1;
            }
            break;
        case 73:
            {
            alt108=2;
            }
            break;
        case 74:
            {
            alt108=3;
            }
            break;
        default:
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 108, 0, input);

            throw nvae;
        }

        switch (alt108) {
            case 1 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3326:4: '.'
                {
                match(input,13,FOLLOW_13_in_synpred12_InternalEveDesc7550); if (state.failed) return ;

                }
                break;
            case 2 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3328:6: ( ( '?.' ) )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3328:6: ( ( '?.' ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3329:1: ( '?.' )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3329:1: ( '?.' )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3330:2: '?.'
                {
                match(input,73,FOLLOW_73_in_synpred12_InternalEveDesc7564); if (state.failed) return ;

                }


                }


                }
                break;
            case 3 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3335:6: ( ( '*.' ) )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3335:6: ( ( '*.' ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3336:1: ( '*.' )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3336:1: ( '*.' )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3337:2: '*.'
                {
                match(input,74,FOLLOW_74_in_synpred12_InternalEveDesc7584); if (state.failed) return ;

                }


                }


                }
                break;

        }


        }


        }
    }
    // $ANTLR end synpred12_InternalEveDesc

    // $ANTLR start synpred13_InternalEveDesc
    public final void synpred13_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3446:4: ( ( '(' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3447:1: ( '(' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3447:1: ( '(' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3448:2: '('
        {
        match(input,16,FOLLOW_16_in_synpred13_InternalEveDesc7811); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred13_InternalEveDesc

    // $ANTLR start synpred14_InternalEveDesc
    public final void synpred14_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3467:6: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3468:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3468:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt110=2;
        int LA110_0 = input.LA(1);

        if ( (LA110_0==RULE_ID||LA110_0==16||LA110_0==44) ) {
            alt110=1;
        }
        switch (alt110) {
            case 1 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3468:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3468:3: ( ( ruleJvmFormalParameter ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3469:1: ( ruleJvmFormalParameter )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3469:1: ( ruleJvmFormalParameter )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3470:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred14_InternalEveDesc7863);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3472:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop109:
                do {
                    int alt109=2;
                    int LA109_0 = input.LA(1);

                    if ( (LA109_0==17) ) {
                        alt109=1;
                    }


                    switch (alt109) {
                	case 1 :
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3472:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,17,FOLLOW_17_in_synpred14_InternalEveDesc7870); if (state.failed) return ;
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3473:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3474:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3474:1: ( ruleJvmFormalParameter )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3475:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred14_InternalEveDesc7877);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop109;
                    }
                } while (true);


                }
                break;

        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3477:6: ( ( '|' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3478:1: ( '|' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3478:1: ( '|' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3479:2: '|'
        {
        match(input,75,FOLLOW_75_in_synpred14_InternalEveDesc7891); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred14_InternalEveDesc

    // $ANTLR start synpred15_InternalEveDesc
    public final void synpred15_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3546:4: ( ( ruleXClosure ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3547:1: ( ruleXClosure )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3547:1: ( ruleXClosure )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3548:1: ruleXClosure
        {
        pushFollow(FOLLOW_ruleXClosure_in_synpred15_InternalEveDesc8009);
        ruleXClosure();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred15_InternalEveDesc

    // $ANTLR start synpred16_InternalEveDesc
    public final void synpred16_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:2: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:3: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:3: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:4: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:4: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt112=2;
        int LA112_0 = input.LA(1);

        if ( (LA112_0==RULE_ID||LA112_0==16||LA112_0==44) ) {
            alt112=1;
        }
        switch (alt112) {
            case 1 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:5: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3829:5: ( ( ruleJvmFormalParameter ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3830:1: ( ruleJvmFormalParameter )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3830:1: ( ruleJvmFormalParameter )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3831:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalEveDesc8782);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3833:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop111:
                do {
                    int alt111=2;
                    int LA111_0 = input.LA(1);

                    if ( (LA111_0==17) ) {
                        alt111=1;
                    }


                    switch (alt111) {
                	case 1 :
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3833:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,17,FOLLOW_17_in_synpred16_InternalEveDesc8789); if (state.failed) return ;
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3834:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3835:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3835:1: ( ruleJvmFormalParameter )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3836:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalEveDesc8796);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop111;
                    }
                } while (true);


                }
                break;

        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3838:6: ( ( '|' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3839:1: ( '|' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3839:1: ( '|' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:3840:2: '|'
        {
        match(input,75,FOLLOW_75_in_synpred16_InternalEveDesc8810); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred16_InternalEveDesc

    // $ANTLR start synpred18_InternalEveDesc
    public final void synpred18_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:4: ( 'else' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4199:6: 'else'
        {
        match(input,77,FOLLOW_77_in_synpred18_InternalEveDesc9593); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred18_InternalEveDesc

    // $ANTLR start synpred19_InternalEveDesc
    public final void synpred19_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:2: ( ( ( ( ruleValidID ) ) ':' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:3: ( ( ( ruleValidID ) ) ':' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:3: ( ( ( ruleValidID ) ) ':' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:4: ( ( ruleValidID ) ) ':'
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4253:4: ( ( ruleValidID ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4254:1: ( ruleValidID )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4254:1: ( ruleValidID )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4255:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred19_InternalEveDesc9733);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        match(input,19,FOLLOW_19_in_synpred19_InternalEveDesc9739); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred19_InternalEveDesc

    // $ANTLR start synpred20_InternalEveDesc
    public final void synpred20_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4828:6: ( ( ruleJvmTypeReference ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4829:1: ( ruleJvmTypeReference )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4829:1: ( ruleJvmTypeReference )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4830:1: ruleJvmTypeReference
        {
        pushFollow(FOLLOW_ruleJvmTypeReference_in_synpred20_InternalEveDesc10979);
        ruleJvmTypeReference();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4832:2: ( ( ruleValidID ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4833:1: ( ruleValidID )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4833:1: ( ruleValidID )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:4834:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred20_InternalEveDesc10988);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred20_InternalEveDesc

    // $ANTLR start synpred21_InternalEveDesc
    public final void synpred21_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5132:4: ( ( '(' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5133:1: ( '(' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5133:1: ( '(' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5134:2: '('
        {
        match(input,16,FOLLOW_16_in_synpred21_InternalEveDesc11550); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred21_InternalEveDesc

    // $ANTLR start synpred22_InternalEveDesc
    public final void synpred22_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5153:6: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5154:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5154:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt116=2;
        int LA116_0 = input.LA(1);

        if ( (LA116_0==RULE_ID||LA116_0==16||LA116_0==44) ) {
            alt116=1;
        }
        switch (alt116) {
            case 1 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5154:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5154:3: ( ( ruleJvmFormalParameter ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5155:1: ( ruleJvmFormalParameter )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5155:1: ( ruleJvmFormalParameter )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5156:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred22_InternalEveDesc11602);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5158:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop115:
                do {
                    int alt115=2;
                    int LA115_0 = input.LA(1);

                    if ( (LA115_0==17) ) {
                        alt115=1;
                    }


                    switch (alt115) {
                	case 1 :
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5158:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,17,FOLLOW_17_in_synpred22_InternalEveDesc11609); if (state.failed) return ;
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5159:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5160:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5160:1: ( ruleJvmFormalParameter )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5161:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred22_InternalEveDesc11616);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop115;
                    }
                } while (true);


                }
                break;

        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5163:6: ( ( '|' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5164:1: ( '|' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5164:1: ( '|' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5165:2: '|'
        {
        match(input,75,FOLLOW_75_in_synpred22_InternalEveDesc11630); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred22_InternalEveDesc

    // $ANTLR start synpred23_InternalEveDesc
    public final void synpred23_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5232:4: ( ( ruleXClosure ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5233:1: ( ruleXClosure )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5233:1: ( ruleXClosure )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5234:1: ruleXClosure
        {
        pushFollow(FOLLOW_ruleXClosure_in_synpred23_InternalEveDesc11748);
        ruleXClosure();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred23_InternalEveDesc

    // $ANTLR start synpred24_InternalEveDesc
    public final void synpred24_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:4: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:4: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:5: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5429:5: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5430:1: 
        {
        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5430:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt118=2;
        int LA118_0 = input.LA(1);

        if ( (LA118_0==RULE_ID||LA118_0==16||LA118_0==44) ) {
            alt118=1;
        }
        switch (alt118) {
            case 1 :
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5430:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5430:3: ( ( ruleJvmFormalParameter ) )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5431:1: ( ruleJvmFormalParameter )
                {
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5431:1: ( ruleJvmFormalParameter )
                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5432:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred24_InternalEveDesc12239);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5434:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop117:
                do {
                    int alt117=2;
                    int LA117_0 = input.LA(1);

                    if ( (LA117_0==17) ) {
                        alt117=1;
                    }


                    switch (alt117) {
                	case 1 :
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5434:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,17,FOLLOW_17_in_synpred24_InternalEveDesc12246); if (state.failed) return ;
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5435:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5436:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5436:1: ( ruleJvmFormalParameter )
                	    // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5437:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred24_InternalEveDesc12253);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop117;
                    }
                } while (true);


                }
                break;

        }

        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5439:6: ( ( '|' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5440:1: ( '|' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5440:1: ( '|' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5441:2: '|'
        {
        match(input,75,FOLLOW_75_in_synpred24_InternalEveDesc12267); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred24_InternalEveDesc

    // $ANTLR start synpred25_InternalEveDesc
    public final void synpred25_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5508:2: ( ( ruleXClosure ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5509:1: ( ruleXClosure )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5509:1: ( ruleXClosure )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5510:1: ruleXClosure
        {
        pushFollow(FOLLOW_ruleXClosure_in_synpred25_InternalEveDesc12383);
        ruleXClosure();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred25_InternalEveDesc

    // $ANTLR start synpred26_InternalEveDesc
    public final void synpred26_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5832:2: ( ( ruleXExpression ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5833:1: ( ruleXExpression )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5833:1: ( ruleXExpression )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5834:1: ruleXExpression
        {
        pushFollow(FOLLOW_ruleXExpression_in_synpred26_InternalEveDesc13186);
        ruleXExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred26_InternalEveDesc

    // $ANTLR start synpred27_InternalEveDesc
    public final void synpred27_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:5: ( 'catch' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5903:7: 'catch'
        {
        match(input,96,FOLLOW_96_in_synpred27_InternalEveDesc13331); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred27_InternalEveDesc

    // $ANTLR start synpred28_InternalEveDesc
    public final void synpred28_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:5: ( 'finally' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:5922:7: 'finally'
        {
        match(input,95,FOLLOW_95_in_synpred28_InternalEveDesc13361); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred28_InternalEveDesc

    // $ANTLR start synpred30_InternalEveDesc
    public final void synpred30_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6070:3: ( '.' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6071:2: '.'
        {
        match(input,13,FOLLOW_13_in_synpred30_InternalEveDesc13708); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred30_InternalEveDesc

    // $ANTLR start synpred31_InternalEveDesc
    public final void synpred31_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:2: ( ( () '[' ']' ) )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:3: ( () '[' ']' )
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:3: ( () '[' ']' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:4: () '[' ']'
        {
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6119:4: ()
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6120:1: 
        {
        }

        match(input,33,FOLLOW_33_in_synpred31_InternalEveDesc13860); if (state.failed) return ;
        match(input,34,FOLLOW_34_in_synpred31_InternalEveDesc13864); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred31_InternalEveDesc

    // $ANTLR start synpred32_InternalEveDesc
    public final void synpred32_InternalEveDesc_fragment() throws RecognitionException {   
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:4: ( '<' )
        // ../ie.tcd.everm.evedsl/src-gen/ie/tcd/everm/evedsl/parser/antlr/internal/InternalEveDesc.g:6273:6: '<'
        {
        match(input,64,FOLLOW_64_in_synpred32_InternalEveDesc14224); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred32_InternalEveDesc

    // Delegated rules

    public final boolean synpred5_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred5_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred15_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred15_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred6_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred6_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred23_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred23_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred27_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred27_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred19_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred19_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred21_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred21_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred26_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred26_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred11_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred11_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred16_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred16_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred9_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred9_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred31_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred31_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred22_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred22_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred10_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred4_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred4_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred28_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred28_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred7_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred30_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred30_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred20_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred20_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred24_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred32_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred32_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred13_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred13_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred18_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred18_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred14_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred14_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred3_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred3_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred25_InternalEveDesc() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred25_InternalEveDesc_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA53 dfa53 = new DFA53(this);
    protected DFA52 dfa52 = new DFA52(this);
    protected DFA54 dfa54 = new DFA54(this);
    protected DFA60 dfa60 = new DFA60(this);
    protected DFA83 dfa83 = new DFA83(this);
    protected DFA82 dfa82 = new DFA82(this);
    protected DFA84 dfa84 = new DFA84(this);
    protected DFA90 dfa90 = new DFA90(this);
    protected DFA91 dfa91 = new DFA91(this);
    protected DFA93 dfa93 = new DFA93(this);
    protected DFA104 dfa104 = new DFA104(this);
    static final String DFA53_eotS =
        "\100\uffff";
    static final String DFA53_eofS =
        "\1\2\77\uffff";
    static final String DFA53_minS =
        "\1\4\1\0\76\uffff";
    static final String DFA53_maxS =
        "\1\140\1\0\76\uffff";
    static final String DFA53_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA53_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA53_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\1\1\3\2\1\uffff\2\2\6\uffff\1\2\3"+
            "\uffff\3\2\1\uffff\3\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2"+
            "\1\uffff\24\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA53_eot = DFA.unpackEncodedString(DFA53_eotS);
    static final short[] DFA53_eof = DFA.unpackEncodedString(DFA53_eofS);
    static final char[] DFA53_min = DFA.unpackEncodedStringToUnsignedChars(DFA53_minS);
    static final char[] DFA53_max = DFA.unpackEncodedStringToUnsignedChars(DFA53_maxS);
    static final short[] DFA53_accept = DFA.unpackEncodedString(DFA53_acceptS);
    static final short[] DFA53_special = DFA.unpackEncodedString(DFA53_specialS);
    static final short[][] DFA53_transition;

    static {
        int numStates = DFA53_transitionS.length;
        DFA53_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA53_transition[i] = DFA.unpackEncodedString(DFA53_transitionS[i]);
        }
    }

    class DFA53 extends DFA {

        public DFA53(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 53;
            this.eot = DFA53_eot;
            this.eof = DFA53_eof;
            this.min = DFA53_min;
            this.max = DFA53_max;
            this.accept = DFA53_accept;
            this.special = DFA53_special;
            this.transition = DFA53_transition;
        }
        public String getDescription() {
            return "3446:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA53_1 = input.LA(1);

                         
                        int index53_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index53_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 53, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA52_eotS =
        "\34\uffff";
    static final String DFA52_eofS =
        "\34\uffff";
    static final String DFA52_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA52_maxS =
        "\1\136\2\0\31\uffff";
    static final String DFA52_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA52_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA52_transitionS = {
            "\1\1\2\5\11\uffff\1\2\1\uffff\1\33\2\uffff\1\5\13\uffff\1\5"+
            "\12\uffff\1\3\23\uffff\1\5\1\uffff\2\5\3\uffff\1\5\3\uffff\1"+
            "\4\1\5\1\uffff\1\5\2\uffff\3\5\1\uffff\1\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
    static final short[][] DFA52_transition;

    static {
        int numStates = DFA52_transitionS.length;
        DFA52_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
        }
    }

    class DFA52 extends DFA {

        public DFA52(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 52;
            this.eot = DFA52_eot;
            this.eof = DFA52_eof;
            this.min = DFA52_min;
            this.max = DFA52_max;
            this.accept = DFA52_accept;
            this.special = DFA52_special;
            this.transition = DFA52_transition;
        }
        public String getDescription() {
            return "3467:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA52_0 = input.LA(1);

                         
                        int index52_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA52_0==RULE_ID) ) {s = 1;}

                        else if ( (LA52_0==16) ) {s = 2;}

                        else if ( (LA52_0==44) && (synpred14_InternalEveDesc())) {s = 3;}

                        else if ( (LA52_0==75) && (synpred14_InternalEveDesc())) {s = 4;}

                        else if ( ((LA52_0>=RULE_STRING && LA52_0<=RULE_INT)||LA52_0==21||LA52_0==33||LA52_0==64||(LA52_0>=66 && LA52_0<=67)||LA52_0==71||LA52_0==76||LA52_0==78||(LA52_0>=81 && LA52_0<=83)||LA52_0==85||(LA52_0>=87 && LA52_0<=94)) ) {s = 5;}

                        else if ( (LA52_0==18) ) {s = 27;}

                         
                        input.seek(index52_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA52_1 = input.LA(1);

                         
                        int index52_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred14_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index52_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA52_2 = input.LA(1);

                         
                        int index52_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred14_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index52_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 52, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA54_eotS =
        "\100\uffff";
    static final String DFA54_eofS =
        "\1\2\77\uffff";
    static final String DFA54_minS =
        "\1\4\1\0\76\uffff";
    static final String DFA54_maxS =
        "\1\140\1\0\76\uffff";
    static final String DFA54_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA54_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA54_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\4\2\1\uffff\2\2\6\uffff\1\2\3\uffff"+
            "\1\1\2\2\1\uffff\3\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2\1"+
            "\uffff\24\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA54_eot = DFA.unpackEncodedString(DFA54_eotS);
    static final short[] DFA54_eof = DFA.unpackEncodedString(DFA54_eofS);
    static final char[] DFA54_min = DFA.unpackEncodedStringToUnsignedChars(DFA54_minS);
    static final char[] DFA54_max = DFA.unpackEncodedStringToUnsignedChars(DFA54_maxS);
    static final short[] DFA54_accept = DFA.unpackEncodedString(DFA54_acceptS);
    static final short[] DFA54_special = DFA.unpackEncodedString(DFA54_specialS);
    static final short[][] DFA54_transition;

    static {
        int numStates = DFA54_transitionS.length;
        DFA54_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA54_transition[i] = DFA.unpackEncodedString(DFA54_transitionS[i]);
        }
    }

    class DFA54 extends DFA {

        public DFA54(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 54;
            this.eot = DFA54_eot;
            this.eof = DFA54_eof;
            this.min = DFA54_min;
            this.max = DFA54_max;
            this.accept = DFA54_accept;
            this.special = DFA54_special;
            this.transition = DFA54_transition;
        }
        public String getDescription() {
            return "3546:3: ( ( ( ruleXClosure ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA54_1 = input.LA(1);

                         
                        int index54_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred15_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index54_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 54, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA60_eotS =
        "\36\uffff";
    static final String DFA60_eofS =
        "\36\uffff";
    static final String DFA60_minS =
        "\1\4\2\0\33\uffff";
    static final String DFA60_maxS =
        "\1\136\2\0\33\uffff";
    static final String DFA60_acceptS =
        "\3\uffff\2\1\1\2\30\uffff";
    static final String DFA60_specialS =
        "\1\0\1\1\1\2\33\uffff}>";
    static final String[] DFA60_transitionS = {
            "\1\1\2\5\11\uffff\1\2\4\uffff\1\5\13\uffff\2\5\4\uffff\1\5"+
            "\4\uffff\1\3\23\uffff\1\5\1\uffff\2\5\3\uffff\1\5\3\uffff\1"+
            "\4\1\5\1\uffff\1\5\2\uffff\5\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA60_eot = DFA.unpackEncodedString(DFA60_eotS);
    static final short[] DFA60_eof = DFA.unpackEncodedString(DFA60_eofS);
    static final char[] DFA60_min = DFA.unpackEncodedStringToUnsignedChars(DFA60_minS);
    static final char[] DFA60_max = DFA.unpackEncodedStringToUnsignedChars(DFA60_maxS);
    static final short[] DFA60_accept = DFA.unpackEncodedString(DFA60_acceptS);
    static final short[] DFA60_special = DFA.unpackEncodedString(DFA60_specialS);
    static final short[][] DFA60_transition;

    static {
        int numStates = DFA60_transitionS.length;
        DFA60_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA60_transition[i] = DFA.unpackEncodedString(DFA60_transitionS[i]);
        }
    }

    class DFA60 extends DFA {

        public DFA60(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 60;
            this.eot = DFA60_eot;
            this.eof = DFA60_eof;
            this.min = DFA60_min;
            this.max = DFA60_max;
            this.accept = DFA60_accept;
            this.special = DFA60_special;
            this.transition = DFA60_transition;
        }
        public String getDescription() {
            return "3829:1: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA60_0 = input.LA(1);

                         
                        int index60_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA60_0==RULE_ID) ) {s = 1;}

                        else if ( (LA60_0==16) ) {s = 2;}

                        else if ( (LA60_0==44) && (synpred16_InternalEveDesc())) {s = 3;}

                        else if ( (LA60_0==75) && (synpred16_InternalEveDesc())) {s = 4;}

                        else if ( ((LA60_0>=RULE_STRING && LA60_0<=RULE_INT)||LA60_0==21||(LA60_0>=33 && LA60_0<=34)||LA60_0==39||LA60_0==64||(LA60_0>=66 && LA60_0<=67)||LA60_0==71||LA60_0==76||LA60_0==78||(LA60_0>=81 && LA60_0<=85)||(LA60_0>=87 && LA60_0<=94)) ) {s = 5;}

                         
                        input.seek(index60_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA60_1 = input.LA(1);

                         
                        int index60_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index60_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA60_2 = input.LA(1);

                         
                        int index60_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index60_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 60, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA83_eotS =
        "\100\uffff";
    static final String DFA83_eofS =
        "\1\2\77\uffff";
    static final String DFA83_minS =
        "\1\4\1\0\76\uffff";
    static final String DFA83_maxS =
        "\1\140\1\0\76\uffff";
    static final String DFA83_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA83_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA83_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\1\1\3\2\1\uffff\2\2\6\uffff\1\2\3"+
            "\uffff\3\2\1\uffff\3\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2"+
            "\1\uffff\24\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
    static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
    static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
    static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
    static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
    static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
    static final short[][] DFA83_transition;

    static {
        int numStates = DFA83_transitionS.length;
        DFA83_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA83_transition[i] = DFA.unpackEncodedString(DFA83_transitionS[i]);
        }
    }

    class DFA83 extends DFA {

        public DFA83(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 83;
            this.eot = DFA83_eot;
            this.eof = DFA83_eof;
            this.min = DFA83_min;
            this.max = DFA83_max;
            this.accept = DFA83_accept;
            this.special = DFA83_special;
            this.transition = DFA83_transition;
        }
        public String getDescription() {
            return "5132:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA83_1 = input.LA(1);

                         
                        int index83_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred21_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index83_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 83, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA82_eotS =
        "\34\uffff";
    static final String DFA82_eofS =
        "\34\uffff";
    static final String DFA82_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA82_maxS =
        "\1\136\2\0\31\uffff";
    static final String DFA82_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA82_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA82_transitionS = {
            "\1\1\2\5\11\uffff\1\2\1\uffff\1\33\2\uffff\1\5\13\uffff\1\5"+
            "\12\uffff\1\3\23\uffff\1\5\1\uffff\2\5\3\uffff\1\5\3\uffff\1"+
            "\4\1\5\1\uffff\1\5\2\uffff\3\5\1\uffff\1\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
    static final short[][] DFA82_transition;

    static {
        int numStates = DFA82_transitionS.length;
        DFA82_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
        }
    }

    class DFA82 extends DFA {

        public DFA82(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 82;
            this.eot = DFA82_eot;
            this.eof = DFA82_eof;
            this.min = DFA82_min;
            this.max = DFA82_max;
            this.accept = DFA82_accept;
            this.special = DFA82_special;
            this.transition = DFA82_transition;
        }
        public String getDescription() {
            return "5153:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA82_0 = input.LA(1);

                         
                        int index82_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA82_0==RULE_ID) ) {s = 1;}

                        else if ( (LA82_0==16) ) {s = 2;}

                        else if ( (LA82_0==44) && (synpred22_InternalEveDesc())) {s = 3;}

                        else if ( (LA82_0==75) && (synpred22_InternalEveDesc())) {s = 4;}

                        else if ( ((LA82_0>=RULE_STRING && LA82_0<=RULE_INT)||LA82_0==21||LA82_0==33||LA82_0==64||(LA82_0>=66 && LA82_0<=67)||LA82_0==71||LA82_0==76||LA82_0==78||(LA82_0>=81 && LA82_0<=83)||LA82_0==85||(LA82_0>=87 && LA82_0<=94)) ) {s = 5;}

                        else if ( (LA82_0==18) ) {s = 27;}

                         
                        input.seek(index82_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA82_1 = input.LA(1);

                         
                        int index82_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred22_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index82_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA82_2 = input.LA(1);

                         
                        int index82_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred22_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index82_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 82, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA84_eotS =
        "\100\uffff";
    static final String DFA84_eofS =
        "\1\2\77\uffff";
    static final String DFA84_minS =
        "\1\4\1\0\76\uffff";
    static final String DFA84_maxS =
        "\1\140\1\0\76\uffff";
    static final String DFA84_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA84_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA84_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\4\2\1\uffff\2\2\6\uffff\1\2\3\uffff"+
            "\1\1\2\2\1\uffff\3\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2\1"+
            "\uffff\24\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA84_eot = DFA.unpackEncodedString(DFA84_eotS);
    static final short[] DFA84_eof = DFA.unpackEncodedString(DFA84_eofS);
    static final char[] DFA84_min = DFA.unpackEncodedStringToUnsignedChars(DFA84_minS);
    static final char[] DFA84_max = DFA.unpackEncodedStringToUnsignedChars(DFA84_maxS);
    static final short[] DFA84_accept = DFA.unpackEncodedString(DFA84_acceptS);
    static final short[] DFA84_special = DFA.unpackEncodedString(DFA84_specialS);
    static final short[][] DFA84_transition;

    static {
        int numStates = DFA84_transitionS.length;
        DFA84_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA84_transition[i] = DFA.unpackEncodedString(DFA84_transitionS[i]);
        }
    }

    class DFA84 extends DFA {

        public DFA84(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 84;
            this.eot = DFA84_eot;
            this.eof = DFA84_eof;
            this.min = DFA84_min;
            this.max = DFA84_max;
            this.accept = DFA84_accept;
            this.special = DFA84_special;
            this.transition = DFA84_transition;
        }
        public String getDescription() {
            return "5232:3: ( ( ( ruleXClosure ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA84_1 = input.LA(1);

                         
                        int index84_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred23_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index84_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 84, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA90_eotS =
        "\34\uffff";
    static final String DFA90_eofS =
        "\34\uffff";
    static final String DFA90_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA90_maxS =
        "\1\136\2\0\31\uffff";
    static final String DFA90_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA90_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA90_transitionS = {
            "\1\1\2\5\11\uffff\1\2\1\uffff\1\33\2\uffff\1\5\13\uffff\1\5"+
            "\12\uffff\1\3\23\uffff\1\5\1\uffff\2\5\3\uffff\1\5\3\uffff\1"+
            "\4\1\5\1\uffff\1\5\2\uffff\3\5\1\uffff\1\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA90_eot = DFA.unpackEncodedString(DFA90_eotS);
    static final short[] DFA90_eof = DFA.unpackEncodedString(DFA90_eofS);
    static final char[] DFA90_min = DFA.unpackEncodedStringToUnsignedChars(DFA90_minS);
    static final char[] DFA90_max = DFA.unpackEncodedStringToUnsignedChars(DFA90_maxS);
    static final short[] DFA90_accept = DFA.unpackEncodedString(DFA90_acceptS);
    static final short[] DFA90_special = DFA.unpackEncodedString(DFA90_specialS);
    static final short[][] DFA90_transition;

    static {
        int numStates = DFA90_transitionS.length;
        DFA90_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA90_transition[i] = DFA.unpackEncodedString(DFA90_transitionS[i]);
        }
    }

    class DFA90 extends DFA {

        public DFA90(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 90;
            this.eot = DFA90_eot;
            this.eof = DFA90_eof;
            this.min = DFA90_min;
            this.max = DFA90_max;
            this.accept = DFA90_accept;
            this.special = DFA90_special;
            this.transition = DFA90_transition;
        }
        public String getDescription() {
            return "5429:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA90_0 = input.LA(1);

                         
                        int index90_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA90_0==RULE_ID) ) {s = 1;}

                        else if ( (LA90_0==16) ) {s = 2;}

                        else if ( (LA90_0==44) && (synpred24_InternalEveDesc())) {s = 3;}

                        else if ( (LA90_0==75) && (synpred24_InternalEveDesc())) {s = 4;}

                        else if ( ((LA90_0>=RULE_STRING && LA90_0<=RULE_INT)||LA90_0==21||LA90_0==33||LA90_0==64||(LA90_0>=66 && LA90_0<=67)||LA90_0==71||LA90_0==76||LA90_0==78||(LA90_0>=81 && LA90_0<=83)||LA90_0==85||(LA90_0>=87 && LA90_0<=94)) ) {s = 5;}

                        else if ( (LA90_0==18) ) {s = 27;}

                         
                        input.seek(index90_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA90_1 = input.LA(1);

                         
                        int index90_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred24_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index90_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA90_2 = input.LA(1);

                         
                        int index90_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred24_InternalEveDesc()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index90_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 90, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA91_eotS =
        "\100\uffff";
    static final String DFA91_eofS =
        "\1\2\77\uffff";
    static final String DFA91_minS =
        "\1\4\1\0\76\uffff";
    static final String DFA91_maxS =
        "\1\140\1\0\76\uffff";
    static final String DFA91_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA91_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA91_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\4\2\1\uffff\2\2\6\uffff\1\2\3\uffff"+
            "\1\1\2\2\1\uffff\3\2\1\uffff\1\2\2\uffff\1\2\10\uffff\1\2\1"+
            "\uffff\24\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA91_eot = DFA.unpackEncodedString(DFA91_eotS);
    static final short[] DFA91_eof = DFA.unpackEncodedString(DFA91_eofS);
    static final char[] DFA91_min = DFA.unpackEncodedStringToUnsignedChars(DFA91_minS);
    static final char[] DFA91_max = DFA.unpackEncodedStringToUnsignedChars(DFA91_maxS);
    static final short[] DFA91_accept = DFA.unpackEncodedString(DFA91_acceptS);
    static final short[] DFA91_special = DFA.unpackEncodedString(DFA91_specialS);
    static final short[][] DFA91_transition;

    static {
        int numStates = DFA91_transitionS.length;
        DFA91_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA91_transition[i] = DFA.unpackEncodedString(DFA91_transitionS[i]);
        }
    }

    class DFA91 extends DFA {

        public DFA91(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 91;
            this.eot = DFA91_eot;
            this.eof = DFA91_eof;
            this.min = DFA91_min;
            this.max = DFA91_max;
            this.accept = DFA91_accept;
            this.special = DFA91_special;
            this.transition = DFA91_transition;
        }
        public String getDescription() {
            return "5508:1: ( ( ( ruleXClosure ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA91_1 = input.LA(1);

                         
                        int index91_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred25_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index91_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 91, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA93_eotS =
        "\100\uffff";
    static final String DFA93_eofS =
        "\1\31\77\uffff";
    static final String DFA93_minS =
        "\1\4\30\0\47\uffff";
    static final String DFA93_maxS =
        "\1\140\30\0\47\uffff";
    static final String DFA93_acceptS =
        "\31\uffff\1\2\45\uffff\1\1";
    static final String DFA93_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\47\uffff}>";
    static final String[] DFA93_transitionS = {
            "\1\1\1\17\1\15\6\uffff\2\31\1\uffff\1\30\3\31\1\uffff\1\6\1"+
            "\31\6\uffff\1\31\3\uffff\1\12\2\31\1\uffff\3\31\1\uffff\1\31"+
            "\2\uffff\1\31\10\uffff\1\31\1\uffff\11\31\1\10\1\31\1\4\1\3"+
            "\3\31\1\2\3\31\1\uffff\1\21\1\31\1\7\2\31\1\22\1\23\1\24\1\31"+
            "\1\11\1\uffff\1\5\1\13\1\14\1\16\1\20\1\25\1\26\1\27\2\31",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA93_eot = DFA.unpackEncodedString(DFA93_eotS);
    static final short[] DFA93_eof = DFA.unpackEncodedString(DFA93_eofS);
    static final char[] DFA93_min = DFA.unpackEncodedStringToUnsignedChars(DFA93_minS);
    static final char[] DFA93_max = DFA.unpackEncodedStringToUnsignedChars(DFA93_maxS);
    static final short[] DFA93_accept = DFA.unpackEncodedString(DFA93_acceptS);
    static final short[] DFA93_special = DFA.unpackEncodedString(DFA93_specialS);
    static final short[][] DFA93_transition;

    static {
        int numStates = DFA93_transitionS.length;
        DFA93_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA93_transition[i] = DFA.unpackEncodedString(DFA93_transitionS[i]);
        }
    }

    class DFA93 extends DFA {

        public DFA93(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 93;
            this.eot = DFA93_eot;
            this.eof = DFA93_eof;
            this.min = DFA93_min;
            this.max = DFA93_max;
            this.accept = DFA93_accept;
            this.special = DFA93_special;
            this.transition = DFA93_transition;
        }
        public String getDescription() {
            return "5832:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA93_1 = input.LA(1);

                         
                        int index93_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA93_2 = input.LA(1);

                         
                        int index93_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA93_3 = input.LA(1);

                         
                        int index93_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA93_4 = input.LA(1);

                         
                        int index93_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA93_5 = input.LA(1);

                         
                        int index93_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA93_6 = input.LA(1);

                         
                        int index93_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA93_7 = input.LA(1);

                         
                        int index93_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA93_8 = input.LA(1);

                         
                        int index93_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA93_9 = input.LA(1);

                         
                        int index93_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA93_10 = input.LA(1);

                         
                        int index93_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA93_11 = input.LA(1);

                         
                        int index93_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA93_12 = input.LA(1);

                         
                        int index93_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA93_13 = input.LA(1);

                         
                        int index93_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA93_14 = input.LA(1);

                         
                        int index93_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA93_15 = input.LA(1);

                         
                        int index93_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA93_16 = input.LA(1);

                         
                        int index93_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA93_17 = input.LA(1);

                         
                        int index93_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA93_18 = input.LA(1);

                         
                        int index93_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA93_19 = input.LA(1);

                         
                        int index93_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA93_20 = input.LA(1);

                         
                        int index93_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA93_21 = input.LA(1);

                         
                        int index93_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA93_22 = input.LA(1);

                         
                        int index93_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA93_23 = input.LA(1);

                         
                        int index93_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_23);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA93_24 = input.LA(1);

                         
                        int index93_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalEveDesc()) ) {s = 63;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index93_24);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 93, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA104_eotS =
        "\104\uffff";
    static final String DFA104_eofS =
        "\1\2\103\uffff";
    static final String DFA104_minS =
        "\1\4\1\0\102\uffff";
    static final String DFA104_maxS =
        "\1\140\1\0\102\uffff";
    static final String DFA104_acceptS =
        "\2\uffff\1\2\100\uffff\1\1";
    static final String DFA104_specialS =
        "\1\uffff\1\0\102\uffff}>";
    static final String[] DFA104_transitionS = {
            "\3\2\6\uffff\2\2\1\uffff\4\2\1\uffff\2\2\2\uffff\1\2\3\uffff"+
            "\1\2\3\uffff\3\2\1\uffff\5\2\2\uffff\2\2\6\uffff\2\2\1\uffff"+
            "\11\2\1\1\12\2\1\uffff\12\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA104_eot = DFA.unpackEncodedString(DFA104_eotS);
    static final short[] DFA104_eof = DFA.unpackEncodedString(DFA104_eofS);
    static final char[] DFA104_min = DFA.unpackEncodedStringToUnsignedChars(DFA104_minS);
    static final char[] DFA104_max = DFA.unpackEncodedStringToUnsignedChars(DFA104_maxS);
    static final short[] DFA104_accept = DFA.unpackEncodedString(DFA104_acceptS);
    static final short[] DFA104_special = DFA.unpackEncodedString(DFA104_specialS);
    static final short[][] DFA104_transition;

    static {
        int numStates = DFA104_transitionS.length;
        DFA104_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA104_transition[i] = DFA.unpackEncodedString(DFA104_transitionS[i]);
        }
    }

    class DFA104 extends DFA {

        public DFA104(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 104;
            this.eot = DFA104_eot;
            this.eof = DFA104_eof;
            this.min = DFA104_min;
            this.max = DFA104_max;
            this.accept = DFA104_accept;
            this.special = DFA104_special;
            this.transition = DFA104_transition;
        }
        public String getDescription() {
            return "6273:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA104_1 = input.LA(1);

                         
                        int index104_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred32_InternalEveDesc()) ) {s = 67;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index104_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 104, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_ruleEventDesc_in_entryRuleEventDesc75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEventDesc85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleEventDesc122 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEventDesc143 = new BitSet(new long[]{0x0000040000101002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleEventDesc164 = new BitSet(new long[]{0x0000040000101002L});
    public static final BitSet FOLLOW_ruleEventSeq_in_ruleEventDesc186 = new BitSet(new long[]{0x0000040000100002L});
    public static final BitSet FOLLOW_ruleAPI_in_ruleEventDesc208 = new BitSet(new long[]{0x0000040000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport245 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleImport292 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_ruleImport313 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard350 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard408 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_13_in_ruleQualifiedNameWithWildCard427 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleQualifiedNameWithWildCard440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHelper_in_entryRuleHelper482 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHelper492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleHelper529 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleHelper546 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleHelper563 = new BitSet(new long[]{0x0000100000050010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleHelper585 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_17_in_ruleHelper598 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleHelper619 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_18_in_ruleHelper635 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleHelper647 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleHelper668 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleHelper689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEventSeq_in_entryRuleEventSeq725 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEventSeq735 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleEventSeq772 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEventSeq793 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleEventSeq805 = new BitSet(new long[]{0x0000000000C08000L});
    public static final BitSet FOLLOW_ruleHelper_in_ruleEventSeq826 = new BitSet(new long[]{0x0000000000C08000L});
    public static final BitSet FOLLOW_ruleEvent_in_ruleEventSeq848 = new BitSet(new long[]{0x0000000000C00000L});
    public static final BitSet FOLLOW_22_in_ruleEventSeq861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEvent_in_entryRuleEvent897 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEvent907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleEvent944 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEvent961 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleEvent978 = new BitSet(new long[]{0x0000008001000000L});
    public static final BitSet FOLLOW_ruleDecScope_in_ruleEvent999 = new BitSet(new long[]{0x0000008001000000L});
    public static final BitSet FOLLOW_24_in_ruleEvent1012 = new BitSet(new long[]{0x0000001008000000L});
    public static final BitSet FOLLOW_ruleParser_in_ruleEvent1033 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleEvent1045 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleEvent1057 = new BitSet(new long[]{0x0000000200610070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleEvent1078 = new BitSet(new long[]{0x0000000200610070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_22_in_ruleEvent1091 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleEvent1103 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleEvent1124 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleEvent1136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParser_in_entryRuleParser1172 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParser1182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextParser_in_ruleParser1229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainParser_in_ruleParser1256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextParser_in_entryRuleTextParser1291 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTextParser1301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleTextParser1338 = new BitSet(new long[]{0x0000000010200000L});
    public static final BitSet FOLLOW_28_in_ruleTextParser1351 = new BitSet(new long[]{0x00000001C0000000L});
    public static final BitSet FOLLOW_ruleTextFormatter_in_ruleTextParser1372 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleTextParser1386 = new BitSet(new long[]{0x0000000A20400020L});
    public static final BitSet FOLLOW_29_in_ruleTextParser1399 = new BitSet(new long[]{0x0000008000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleTextParser1420 = new BitSet(new long[]{0x0000000A00400020L});
    public static final BitSet FOLLOW_ruleAbstractTextValue_in_ruleTextParser1443 = new BitSet(new long[]{0x0000000A00400020L});
    public static final BitSet FOLLOW_22_in_ruleTextParser1456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextFormatter_in_entryRuleTextFormatter1492 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTextFormatter1502 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCSVFormatter_in_ruleTextFormatter1543 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSplitFormatter_in_ruleTextFormatter1570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUserDefinedFormatter_in_ruleTextFormatter1597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCSVFormatter_in_entryRuleCSVFormatter1633 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCSVFormatter1644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleCSVFormatter1681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSplitFormatter_in_entryRuleSplitFormatter1720 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSplitFormatter1730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleSplitFormatter1767 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleSplitFormatter1779 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSplitFormatter1796 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleSplitFormatter1813 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUserDefinedFormatter_in_entryRuleUserDefinedFormatter1849 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUserDefinedFormatter1859 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleUserDefinedFormatter1896 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleUserDefinedFormatter1908 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleUserDefinedFormatter1929 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleUserDefinedFormatter1941 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractTextValue_in_entryRuleAbstractTextValue1977 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractTextValue1987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarValue_in_ruleAbstractTextValue2034 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstantText_in_ruleAbstractTextValue2061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIgnoreValue_in_ruleAbstractTextValue2088 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarValue_in_entryRuleVarValue2123 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVarValue2133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleVarValue2170 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleVarValueVariableDesc_in_ruleVarValue2191 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleVarValue2203 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarValueVariableDesc_in_entryRuleVarValueVariableDesc2239 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVarValueVariableDesc2249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleVarValueVariableDesc2291 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleVarValueVariableDesc2314 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleVarValueVariableDesc2348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstantText_in_entryRuleConstantText2384 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstantText2394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConstantText2435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIgnoreValue_in_entryRuleIgnoreValue2475 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIgnoreValue2485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleIgnoreValue2527 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainParser_in_entryRulePlainParser2575 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlainParser2585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_rulePlainParser2622 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_rulePlainParser2634 = new BitSet(new long[]{0x0000002020000000L});
    public static final BitSet FOLLOW_29_in_rulePlainParser2647 = new BitSet(new long[]{0x0000008000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rulePlainParser2668 = new BitSet(new long[]{0x0000002020000000L});
    public static final BitSet FOLLOW_37_in_rulePlainParser2682 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_rulePlainParser2703 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_rulePlainParser2715 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecScope_in_entryRuleDecScope2751 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecScope2761 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariableDec_in_ruleDecScope2807 = new BitSet(new long[]{0x0000014000000000L});
    public static final BitSet FOLLOW_ruleScope_in_ruleDecScope2828 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleDecScope2841 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariableDec_in_entryRuleVariableDec2877 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariableDec2887 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleVariableDec2924 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleVariableDec2941 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleVariableDec2964 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleVariableDec2998 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScope_in_entryRuleScope3034 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScope3044 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleScope3081 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_ruleScope3102 = new BitSet(new long[]{0x0000020000000002L});
    public static final BitSet FOLLOW_41_in_ruleScope3120 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAPI_in_entryRuleAPI3170 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAPI3180 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleAPI3217 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleAPI3238 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleAPI3250 = new BitSet(new long[]{0x0002080000408000L});
    public static final BitSet FOLLOW_ruleHelper_in_ruleAPI3271 = new BitSet(new long[]{0x0002080000408000L});
    public static final BitSet FOLLOW_ruleMapping_in_ruleAPI3293 = new BitSet(new long[]{0x0002080000400000L});
    public static final BitSet FOLLOW_ruleInvocation_in_ruleAPI3315 = new BitSet(new long[]{0x0002000000400000L});
    public static final BitSet FOLLOW_22_in_ruleAPI3328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMapping_in_entryRuleMapping3364 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMapping3374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleMapping3411 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleMapping3432 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleMapping3444 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleMapping3465 = new BitSet(new long[]{0x0000200000200000L});
    public static final BitSet FOLLOW_45_in_ruleMapping3483 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleMapping3509 = new BitSet(new long[]{0x0001C00000000000L});
    public static final BitSet FOLLOW_46_in_ruleMapping3522 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleMapping3543 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_ruleSubType_in_ruleMapping3566 = new BitSet(new long[]{0x0001800000000000L});
    public static final BitSet FOLLOW_47_in_ruleMapping3579 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleMapping3600 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleMapping3612 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubType_in_entryRuleSubType3648 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubType3658 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleSubType3695 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleSubType3716 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleSubType3737 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInvocation_in_entryRuleInvocation3773 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInvocation3783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleInvocation3820 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleInvocation3841 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleInvocation3853 = new BitSet(new long[]{0x0010008002000000L});
    public static final BitSet FOLLOW_ruleVariableDec_in_ruleInvocation3874 = new BitSet(new long[]{0x0010008002000000L});
    public static final BitSet FOLLOW_ruleOperationPointCut_in_ruleInvocation3896 = new BitSet(new long[]{0x0010000002000000L});
    public static final BitSet FOLLOW_25_in_ruleInvocation3909 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleInvocation3930 = new BitSet(new long[]{0x0004000000000000L});
    public static final BitSet FOLLOW_50_in_ruleInvocation3942 = new BitSet(new long[]{0x0008000000200000L});
    public static final BitSet FOLLOW_51_in_ruleInvocation3955 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleInvocation3976 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleInvocation3999 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleInvocation4011 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleInvocation4023 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleInvocation4044 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleInvocation4056 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleInvocation4077 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleInvocation4089 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperationPointCut_in_entryRuleOperationPointCut4125 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOperationPointCut4135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleOperationPointCut4172 = new BitSet(new long[]{0x0000000000000000L,0x000003F000000000L});
    public static final BitSet FOLLOW_ruleOperationType_in_ruleOperationPointCut4193 = new BitSet(new long[]{0x0000100000014010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleOperationPointCut4215 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_14_in_ruleOperationPointCut4233 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_53_in_ruleOperationPointCut4246 = new BitSet(new long[]{0x0000000000004010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOperationPointCut4264 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_14_in_ruleOperationPointCut4287 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleOperationPointCut4309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression4345 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpression4355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression4401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment4435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment4445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXAssignment4503 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4519 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment4539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_ruleXAssignment4569 = new BitSet(new long[]{0x0080000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4622 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment4645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4685 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign4696 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleOpSingleAssign4733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4773 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign4784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleOpMultiAssign4821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4860 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression4870 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression4917 = new BitSet(new long[]{0x0100000000000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_ruleXOrExpression4970 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression4993 = new BitSet(new long[]{0x0100000000000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr5032 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOr5043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleOpOr5080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression5119 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression5129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5176 = new BitSet(new long[]{0x0200000000000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_ruleXAndExpression5229 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5252 = new BitSet(new long[]{0x0200000000000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd5291 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd5302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleOpAnd5339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5378 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression5388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5435 = new BitSet(new long[]{0x0C00000000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_ruleXEqualityExpression5488 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5511 = new BitSet(new long[]{0x0C00000000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality5550 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality5561 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleOpEquality5599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleOpEquality5618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression5658 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression5668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5715 = new BitSet(new long[]{0xF000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_60_in_ruleXRelationalExpression5751 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXRelationalExpression5776 = new BitSet(new long[]{0xF000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleOpCompare_in_ruleXRelationalExpression5837 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5860 = new BitSet(new long[]{0xF000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare5900 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare5911 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleOpCompare5949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleOpCompare5968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleOpCompare5987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleOpCompare6006 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression6046 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression6056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6103 = new BitSet(new long[]{0x0020000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression6156 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6179 = new BitSet(new long[]{0x0020000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther6218 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOther6229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleOpOther6267 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleOpOther6286 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression6326 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression6336 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6383 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000CL});
    public static final BitSet FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression6436 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6459 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000CL});
    public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd6498 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd6509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleOpAdd6547 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleOpAdd6566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression6606 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression6616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6663 = new BitSet(new long[]{0x0000000000004002L,0x0000000000000070L});
    public static final BitSet FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression6716 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6739 = new BitSet(new long[]{0x0000000000004002L,0x0000000000000070L});
    public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti6778 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti6789 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleOpMulti6827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_ruleOpMulti6846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_69_in_ruleOpMulti6865 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleOpMulti6884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation6924 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation6934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_ruleXUnaryOperation6992 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7013 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary7078 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary7089 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_ruleOpUnary7127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleOpUnary7146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleOpUnary7165 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7205 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression7215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression7262 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_ruleXCastedExpression7297 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression7320 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall7358 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall7368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall7415 = new BitSet(new long[]{0x0000000000002002L,0x0000000000000600L});
    public static final BitSet FOLLOW_13_in_ruleXMemberFeatureCall7464 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXMemberFeatureCall7487 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall7503 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall7525 = new BitSet(new long[]{0x0000000000002002L,0x0000000000000600L});
    public static final BitSet FOLLOW_13_in_ruleXMemberFeatureCall7611 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
    public static final BitSet FOLLOW_73_in_ruleXMemberFeatureCall7635 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
    public static final BitSet FOLLOW_74_in_ruleXMemberFeatureCall7672 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleXMemberFeatureCall7701 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall7722 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXMemberFeatureCall7735 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall7756 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_63_in_ruleXMemberFeatureCall7770 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXMemberFeatureCall7795 = new BitSet(new long[]{0x0000000200012002L,0x0000000000000600L});
    public static final BitSet FOLLOW_16_in_ruleXMemberFeatureCall7829 = new BitSet(new long[]{0x0000100200250070L,0x000000007FAE588DL});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall7914 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall7942 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_17_in_ruleXMemberFeatureCall7955 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall7976 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_18_in_ruleXMemberFeatureCall7993 = new BitSet(new long[]{0x0000000200002002L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXMemberFeatureCall8026 = new BitSet(new long[]{0x0000000000002002L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression8066 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression8076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression8123 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression8150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression8177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression8204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression8231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression8258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression8285 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression8312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression8339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression8366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression8393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression8420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression8447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral8482 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral8492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXLiteral8539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral8566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_ruleXLiteral8593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_ruleXLiteral8620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_ruleXLiteral8647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_ruleXLiteral8674 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure8709 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXClosure8719 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleXClosure8765 = new BitSet(new long[]{0x0000108600210070L,0x000000007FBE588DL});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure8836 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_ruleXClosure8849 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure8870 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_ruleXClosure8892 = new BitSet(new long[]{0x0000008600210070L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_ruleXExpressionInClosure_in_ruleXClosure8929 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleXClosure8941 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure8977 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure8987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_ruleXExpressionInClosure9043 = new BitSet(new long[]{0x000000C200210072L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_38_in_ruleXExpressionInClosure9056 = new BitSet(new long[]{0x0000008200210072L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure9096 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure9106 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure9214 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_ruleXShortClosure9227 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure9248 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_ruleXShortClosure9270 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXShortClosure9306 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression9342 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression9352 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleXParenthesizedExpression9389 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression9411 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXParenthesizedExpression9422 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression9458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression9468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleXIfExpression9514 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXIfExpression9526 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression9547 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXIfExpression9559 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression9580 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_ruleXIfExpression9601 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression9623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression9661 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression9671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleXSwitchExpression9717 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXSwitchExpression9758 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXSwitchExpression9770 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression9794 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleXSwitchExpression9806 = new BitSet(new long[]{0x0000100000090010L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXCasePart_in_ruleXSwitchExpression9827 = new BitSet(new long[]{0x0000100000490010L,0x0000000000018000L});
    public static final BitSet FOLLOW_79_in_ruleXSwitchExpression9841 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXSwitchExpression9853 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression9874 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleXSwitchExpression9888 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart9924 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart9934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCasePart9980 = new BitSet(new long[]{0x0000000000080000L,0x0000000000010000L});
    public static final BitSet FOLLOW_80_in_ruleXCasePart9994 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart10015 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXCasePart10029 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart10050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression10086 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression10096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_ruleXForLoopExpression10142 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXForLoopExpression10154 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression10175 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXForLoopExpression10187 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression10208 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXForLoopExpression10220 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression10241 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression10277 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression10287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_ruleXWhileExpression10333 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXWhileExpression10345 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression10366 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXWhileExpression10378 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression10399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression10435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression10445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleXDoWhileExpression10491 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression10512 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_82_in_ruleXDoWhileExpression10524 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXDoWhileExpression10536 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression10557 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXDoWhileExpression10569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression10605 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression10615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleXBlockExpression10661 = new BitSet(new long[]{0x0000008200610070L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression10683 = new BitSet(new long[]{0x000000C200610070L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_38_in_ruleXBlockExpression10696 = new BitSet(new long[]{0x0000008200610070L,0x000000007FBE508DL});
    public static final BitSet FOLLOW_22_in_ruleXBlockExpression10712 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock10748 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInsideBlock10758 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock10805 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock10832 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration10867 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration10877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleXVariableDeclaration10930 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_84_in_ruleXVariableDeclaration10961 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration11009 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration11030 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration11059 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_54_in_ruleXVariableDeclaration11073 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration11094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter11132 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter11142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter11188 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleJvmFormalParameter11210 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter11246 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter11256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleFullJvmFormalParameter11302 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleFullJvmFormalParameter11323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall11359 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall11369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall11426 = new BitSet(new long[]{0x0000000000000010L,0x0000000000200001L});
    public static final BitSet FOLLOW_64_in_ruleXFeatureCall11440 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall11461 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXFeatureCall11474 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall11495 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_63_in_ruleXFeatureCall11509 = new BitSet(new long[]{0x0000000000000010L,0x0000000000200001L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall11534 = new BitSet(new long[]{0x0000000200010002L});
    public static final BitSet FOLLOW_16_in_ruleXFeatureCall11568 = new BitSet(new long[]{0x0000100200250070L,0x000000007FAE588DL});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXFeatureCall11653 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall11681 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_17_in_ruleXFeatureCall11694 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall11715 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_18_in_ruleXFeatureCall11732 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXFeatureCall11765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper11803 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper11814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleIdOrSuper11861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleIdOrSuper11885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier11926 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStaticQualifier11937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleStaticQualifier11984 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
    public static final BitSet FOLLOW_86_in_ruleStaticQualifier12002 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall12043 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall12053 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_ruleXConstructorCall12099 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConstructorCall12122 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleXConstructorCall12135 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall12156 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXConstructorCall12169 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall12190 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_63_in_ruleXConstructorCall12204 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXConstructorCall12218 = new BitSet(new long[]{0x0000100200250070L,0x000000007FAE588DL});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXConstructorCall12290 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall12318 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_17_in_ruleXConstructorCall12331 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall12352 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_18_in_ruleXConstructorCall12369 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXConstructorCall12400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral12437 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral12447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_ruleXBooleanLiteral12494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_ruleXBooleanLiteral12518 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral12568 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral12578 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_90_in_ruleXNullLiteral12624 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral12660 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIntLiteral12670 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleXIntLiteral12721 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral12762 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral12772 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleXStringLiteral12823 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral12864 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral12874 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_ruleXTypeLiteral12920 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXTypeLiteral12932 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral12955 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXTypeLiteral12967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression13003 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression13013 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_92_in_ruleXThrowExpression13059 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXThrowExpression13080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression13116 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression13126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_93_in_ruleXReturnExpression13172 = new BitSet(new long[]{0x0000000200210072L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXReturnExpression13203 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression13240 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression13250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_94_in_ruleXTryCatchFinallyExpression13296 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13317 = new BitSet(new long[]{0x0000000000000000L,0x0000000180000000L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression13347 = new BitSet(new long[]{0x0000000000000002L,0x0000000180000000L});
    public static final BitSet FOLLOW_95_in_ruleXTryCatchFinallyExpression13369 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13391 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_ruleXTryCatchFinallyExpression13413 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression13434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause13472 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause13482 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_96_in_ruleXCatchClause13527 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleXCatchClause13540 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleXCatchClause13561 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXCatchClause13573 = new BitSet(new long[]{0x0000000200210070L,0x000000007FAE508DL});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCatchClause13594 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName13631 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName13642 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName13689 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_13_in_ruleQualifiedName13717 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName13740 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference13787 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference13797 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference13845 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_33_in_ruleJvmTypeReference13883 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleJvmTypeReference13895 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference13927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef13962 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef13972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleXFunctionTypeRef14010 = new BitSet(new long[]{0x0000100000050010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14032 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_17_in_ruleXFunctionTypeRef14045 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14066 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_18_in_ruleXFunctionTypeRef14082 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleXFunctionTypeRef14096 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef14117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference14153 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference14163 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference14211 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleJvmParameterizedTypeReference14232 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference14254 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleJvmParameterizedTypeReference14267 = new BitSet(new long[]{0x0000100000010010L,0x0000000200000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference14288 = new BitSet(new long[]{0x8000000000020000L});
    public static final BitSet FOLLOW_63_in_ruleJvmParameterizedTypeReference14302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference14340 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference14350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference14397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference14424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference14459 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference14469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_97_in_ruleJvmWildcardTypeReference14515 = new BitSet(new long[]{0x0000000000000002L,0x0000000400200000L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference14537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference14564 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound14602 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound14612 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_98_in_ruleJvmUpperBound14649 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound14670 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded14706 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded14716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_99_in_ruleJvmUpperBoundAnded14753 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded14774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound14810 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound14820 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleJvmLowerBound14857 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound14878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID14917 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValidID14928 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleValidID14967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_100_in_ruleOperationType15025 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_101_in_ruleOperationType15042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_ruleOperationType15059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_103_in_ruleOperationType15076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_104_in_ruleOperationType15093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_105_in_ruleOperationType15110 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_synpred1_InternalEveDesc4590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_synpred2_InternalEveDesc4938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_synpred3_InternalEveDesc5197 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_synpred4_InternalEveDesc5456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_synpred5_InternalEveDesc5732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpCompare_in_synpred6_InternalEveDesc5805 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_synpred7_InternalEveDesc6124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAdd_in_synpred8_InternalEveDesc6404 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMulti_in_synpred9_InternalEveDesc6684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_synpred10_InternalEveDesc7278 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_synpred11_InternalEveDesc7432 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred11_InternalEveDesc7441 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_synpred11_InternalEveDesc7447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_synpred12_InternalEveDesc7550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_synpred12_InternalEveDesc7564 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_synpred12_InternalEveDesc7584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_synpred13_InternalEveDesc7811 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred14_InternalEveDesc7863 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_synpred14_InternalEveDesc7870 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred14_InternalEveDesc7877 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_synpred14_InternalEveDesc7891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_synpred15_InternalEveDesc8009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalEveDesc8782 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_synpred16_InternalEveDesc8789 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalEveDesc8796 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_synpred16_InternalEveDesc8810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_synpred18_InternalEveDesc9593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred19_InternalEveDesc9733 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_synpred19_InternalEveDesc9739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_synpred20_InternalEveDesc10979 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred20_InternalEveDesc10988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_synpred21_InternalEveDesc11550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred22_InternalEveDesc11602 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_synpred22_InternalEveDesc11609 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred22_InternalEveDesc11616 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_synpred22_InternalEveDesc11630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_synpred23_InternalEveDesc11748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred24_InternalEveDesc12239 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_17_in_synpred24_InternalEveDesc12246 = new BitSet(new long[]{0x0000100000010010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred24_InternalEveDesc12253 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_synpred24_InternalEveDesc12267 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_synpred25_InternalEveDesc12383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_synpred26_InternalEveDesc13186 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_96_in_synpred27_InternalEveDesc13331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_synpred28_InternalEveDesc13361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_synpred30_InternalEveDesc13708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_synpred31_InternalEveDesc13860 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_synpred31_InternalEveDesc13864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_synpred32_InternalEveDesc14224 = new BitSet(new long[]{0x0000000000000002L});

}